在下面的示例中,自动加载器在什么时候加载类文件(如果有的话)?例如,如果$boolean_test===false是否加载子包?useOrg\Group\Package\Subpackage;//autoloadertriggeredhere?if($boolean_test){Subpackage::method();//orhere?}我更喜欢代码顶部附近的use语句,这样我可以看到页面中使用了哪些包,并提高了可读性。但是,如果仅根据条件使用包,我可能会加载不需要的资源。 最佳答案 Nouse不会触发自动加载。您可以在文件顶部使
我刚刚开始使用composer进行依赖管理,我很难弄清楚我为什么不遵守psr-4进行自动加载,所以我来这里寻求建议。我有一个生成随机值的类,该类已经在packagist上了。项目结构如下(我将composer.json文件标记为A和B):项目目录|classfile.phpA|composer.json|vendor|autoload.php|ejfrancis|php-random-valueB|composer.json|RandomValue.phpcomposer.json{"require":{"ejfrancis/php-random-value":"dev-master"
我将"cviebrock/image-validator":"1.0.*"添加到composer.json的require部分。之后,我运行了composerupdate,我收到了这个fatalerror。:::错误:::Fatalerror:Class'Patchwork\Utf8\Bootup'notfoundinF:\xampp\htdocs\project\bootstrap\autoload.phponline46Scriptphpartisanclear-compiledhandlingthepost-update-cmdeventreturnedwithanerror[R
我在laravel项目中运行composerdump-autoload时出错composerdump-autoloadGeneratingautoloadfiles>Illuminate\Foundation\ComposerScripts::postAutoloadDumpYoumadeareferencetoanon-existentscript@phpartisanpackage:discover然后执行phpartisanpackage:discover返回DiscoveredPackage:barryvdh/laravel-ide-helperDiscoveredPackag
我想知道处理必须在我的PHP脚本中“包含”这么多文件以确保我的脚本可以访问我需要使用的所有类的问题的最佳实践是什么。目前,我正在使用include_once包括我直接访问的类。其中每一个都会include_once他们访问的类。我研究过使用__autoload函数,但如果您计划将类文件组织在目录树中,那么hat似乎不太适用。如果这样做,看起来您最终会遍历目录树,直到找到您要查找的类。此外,我不确定这对不同命名空间中具有相同名称的类有何影响。有没有更简单的方法来处理这个问题?或者PHP是否只是不适合“企业”类型的应用程序,这些应用程序具有许多不同的对象,所有这些对象都位于单独的文件中,这
我正在尝试将几个php脚本转换为使用__autoload函数。现在我可以像这样使用include和require函数:require_once('path/to/script.php');但是在__autoload函数内部,我不能使用上面的行。我必须使用这个:require_once('absolute/path/to/script.php');为什么__autoload函数似乎没有使用我在php.ini中指定的包含路径? 最佳答案 不要使用__autoload...它有一些缺点(包括每次执行限制自己一个)。改用spl_autolo
我正在使用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函数,现在我遇到了那些奇怪的fatalerror:无法重新声明类xxx错误。这很奇怪,因为这些错误发生在我什至没有使用自动加载功能加载的类上。我还使用require_once来包含文件。我真的很困惑这个问题。任何人都知道使用自动加载时出现的此类错误吗? 最佳答案 require_once/include_once仅在尝试包含文件时查看文件名,而不是类名。所以你可以在Foo.php和B.php中都有类Foo,然后你就会得到那个错误。我不确定__autoload会给你带来什么问题,除非__autolo
我已经阅读了很多关于ZF性能的文章,但仍然无法理解,如果我启用了字节码缓存(APC),使用其他一些技巧是否有意义?例如。禁用自动加载并使用一个包含所有必要类的大php文件。 最佳答案 我惊讶地发现这是网站上唯一标记为性能、自动加载、php的问题。有什么比这更好的地方来消除#1自动加载神话:现代的、精心设计的自动加载器不会破坏APC(或PHP5.5的OPcache),并且在性能上也不比require_once差多少(当然函数调用开销除外).为什么?好吧,现在我们有spl_autoload_register,它允许您添加多个自动加载处理
为了补充现有的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