- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
根据 http://php.net/manual/en/language.oop5.autoload.php魔法函数 __autoload()
从 PHP 7.2.0 开始被弃用,从 PHP 8.0.0 开始被移除。
官方替代方法是 spl_autoload()
。参见 http://www.php.net/manual/en/function.spl-autoload.php .但是PHP手册并没有说明这个宝贝的正确使用方法。
我的问题:如何用带有 spl_autoload()
的版本替换这个(我的自动类自动加载器)?
function __autoload($class) {
include 'classes/' . $class . '.class.php';
}
问题:我不知道如何给那个函数一个路径(它只接受命名空间)。
顺便说一下,SO 上有很多关于这个主题的话题,但没有一个给出一个干净简单的解决方案来取代我性感的单线。
最佳答案
您需要使用 spl_autoload_register
注册自动加载函数.您需要提供一个 "callable" .从 5.3 开始,最好的方法是使用匿名函数:
spl_autoload_register(function($class) {
include 'classes/' . $class . '.class.php';
});
相对于 __autoload
的主要优势当然是您可以多次调用 spl_autoload_register
,而 __autoload
(与任何函数一样)可以只被定义一次。如果您有模块化代码,这将是一个重大缺陷。
2018 年对此的更新:您需要滚动自己的自动加载器的情况真的不应该有那么多。有一个被广泛接受的标准(称为 PSR-4 )和几个符合标准的实现。这样做的明显方法是使用 Composer .
关于php - 如何使用 spl_autoload() 而不是 __autoload(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10687804/
我正在尝试在我的项目中使用类自动加载。这是我写的: 在 main.php 上: namespace myproject; spl_autoload_extensions(".php"); spl_au
所以我开始使用命名空间并阅读一些文档,但我似乎做错了什么。 首先是我的应用程序结构,它是这样构建的: root -dashboard(this is where i want to use the a
我从这个例子中得到 http://www.php.net/manual/ru/function.spl-autoload.php#92767 但这会导致错误 * fatal error :spl_au
我刚刚开始在我的应用程序中使用自动加载器延迟加载,并且遇到了命名空间问题。自动加载器正在尝试加载诸如 new DateTime() 之类的内容。和失败。有没有什么技巧可以让我的自动加载器只针对我自己的
可以在 spl_autoload_register 内访问一个类(自动地)? 例如,我使用 spl_autoload_register在 index.php 中:
我们最近一直在使用 OO 重写 PHP 应用程序的模型代码。我们已经完成了类,并且我们包含了命名空间(以 Project\Level1\Level2 或其他形式)。由于这是一个已经构建的应用程序,因此
我在我的 index.php 中设置了一个非常基本的自动加载器,以在 hello.php 中获取命名空间类。我的开发环境是 Ubuntu 12.04。 我为什么要尝试这样做?我试图坚持 PSR-1和
我正在尝试使用 SPL 自动加载功能,似乎缺少一些重要的东西,因为我目前无法让它工作。这是我目前正在使用的片段: // ROOT_DIRECTORY translates to /home/someu
我将下面的代码作为一个自动加载类,但是看起来 clean 方法根本不起作用,它总是退回到 dirty 方法。 我是否错误地使用了 spl_autoload?如果是这样,正确(更好)的方法是什么?这是低
我知道这与路径不太正确有关,但这让我感到困惑。我可以从浏览器毫无问题地运行我的脚本,但是当我从 shell 执行完全相同的位置时,spl_autoload 会提示并死掉: Fatal error: s
根据 http://php.net/manual/en/language.oop5.autoload.php魔法函数 __autoload() 从 PHP 7.2.0 开始被弃用,从 PHP 8.0.
我正在学习高级 PHP 标准并尝试实现新的有用的方法。早些时候我使用 __autoload 只是为了逃避在每个页面上包含多个文件,但最近我看到了关于 __autoload manual 的提示 spl
我是一名优秀的程序员,十分优秀!