草庐IT

autoload

全部标签

php - 如何在 PHP 中处理包含所需的类

我想知道处理必须在我的PHP脚本中“包含”这么多文件以确保我的脚本可以访问我需要使用的所有类的问题的最佳实践是什么。目前,我正在使用include_once包括我直接访问的类。其中每一个都会include_once他们访问的类。我研究过使用__autoload函数,但如果您计划将类文件组织在目录树中,那么hat似乎不太适用。如果这样做,看起来您最终会遍历目录树,直到找到您要查找的类。此外,我不确定这对不同命名空间中具有相同名称的类有何影响。有没有更简单的方法来处理这个问题?或者PHP是否只是不适合“企业”类型的应用程序,这些应用程序具有许多不同的对象,所有这些对象都位于单独的文件中,这

php - 在 php 中包含路径和 __autoload 函数

我正在尝试将几个php脚本转换为使用__autoload函数。现在我可以像这样使用include和require函数:require_once('path/to/script.php');但是在__autoload函数内部,我不能使用上面的行。我必须使用这个:require_once('absolute/path/to/script.php');为什么__autoload函数似乎没有使用我在php.ini中指定的包含路径? 最佳答案 不要使用__autoload...它有一些缺点(包括每次执行限制自己一个)。改用spl_autolo

php - spl_autoload_register 在包含的文件中不起作用

我正在使用spl_autoload_register为了加载类。我有一个index.php文件,其中包含一个init.php文件。spl_autoload_register函数在init.php文件中调用。在index.php文件中,它正常工作:我可以创建类和东西,它们的名称已解析。但后来,在index.php中,我包含了另一个文件work.php来完成一些特定的任务。奇怪的是,在work.php中,找不到我正在使用的类。如果我在work.php中再次调用spl_autoload_register,类就可以解析了。真正奇怪的是这种行为并不一致:在我的测试服务器上,我不必复制spl_au

PHP __autoload 无法重新声明

我开始使用PHP__autoload函数,现在我遇到了那些奇怪的fatalerror:无法重新声明类xxx错误。这很奇怪,因为这些错误发生在我什至没有使用自动加载功能加载的类上。我还使用require_once来包含文件。我真的很困惑这个问题。任何人都知道使用自动加载时出现的此类错误吗? 最佳答案 require_once/include_once仅在尝试包含文件时查看文件名,而不是类名。所以你可以在Foo.php和B.php中都有类Foo,然后你就会得到那个错误。我不确定__autoload会给你带来什么问题,除非__autolo

php - Zend Framework 性能(自动加载)

我已经阅读了很多关于ZF性能的文章,但仍然无法理解,如果我启用了字节码缓存(APC),使用其他一些技巧是否有意义?例如。禁用自动加载并使用一个包含所有必要类的大php文件。 最佳答案 我惊讶地发现这是网站上唯一标记为性能、自动加载、php的问题。有什么比这更好的地方来消除#1自动加载神话:现代的、精心设计的自动加载器不会破坏APC(或PHP5.5的OPcache),并且在性能上也不比require_once差多少(当然函数调用开销除外).为什么?好吧,现在我们有spl_autoload_register,它允许您添加多个自动加载处理

namespaces - 为什么不在 phpunit 测试中加载命名空间自动加载类?

为了补充现有的phpunit、autoload和命名空间之间的大杂烩是这样的:我创建了一个简单的测试项目,它运行PhpUnit测试并使用命名空间自动加载。我像这样在Bootstrap文件中注册自动加载:set_include_path(get_include_path().PATH_SEPARATOR."/path/to/classes/folder");spl_autoload_register();在单元测试中,我像这样加载和测试我的类:$obj=new\some\space\someClass();//whichisintheclasses/some/spacefolder$th

php - __autoload 检测并包含接口(interface)

我在我的脚本中使用__autoload来根据需要包含类。我的脚本使用类名中的提示来查找包含它的文件。如果它以模型结尾,它在模型目录中,Controller在Controller目录中,等等。我开始实现接口(interface),因此需要调整我的自动加载器。理想情况下,当创建对象时,自动加载器将确定对象的文件名、对象的存储位置,并包含该文件。然后它会询问该类实现了哪些接口(interface),然后自动包含这些文件。有点像function__autoload($classname){echo$classname;include("classes/$classname.php");$int

php - 如何自动加载扩展类?

我打算使用PHP的自动加载功能来仅动态加载需要的类文件。现在,如果每个函数都有一个单独的文件,这可能会造成巨大的困惑,所以我希望并询问是否有一种方法可以让相关类保留在1个类文件中并仍然自动加载function__autoload($class_name){include('classes/'.$class_name.'.class.php');}假设有一个名为animals的类,然后是另一个名为dogs的类。Dogs类扩展了animals类,现在如果我要调用dogs类而不调用animals类,是否仍会加载animals类文件? 最佳答案

php - Composer 优化级别 1

关于Composerautoloadoptimizationpage:Note:Youshouldnotenableanyoftheseoptimizationsindevelopmentastheyallwillcausevariousproblemswhenadding/removingclasses.Theperformancegainsarenotworththetroubleinadevelopmentsetting.我肯定能在开发环境中看到2级优化(权威类图)的问题,但我无法确定问题是什么level1optimizations(类映射生成)如果我遵循PSR-4标准。如果我添

php - 我想在一个类中读取一个函数

我不明白追加的是什么。(php7.x)[FriApr1902:48:49.4461622019][proxy_fcgi:error][pid2750][clientxxx.xxx.84.89:48694]AH01071:Goterror'PHPmessage:PHPFatalerror:UncaughtLogicException:Function'Core\OM\CORE::autoload'notfound(class'Core\OM\CORE'notfound)in/var/www/xxxx/xxxx/web8/web/client/index.php:29\nStacktrac