生成bootstrap/compiled.php的记录方法是运行artisan命令:artisan优化artisanoptimize的问题在于它运行composerdump-autoload--optimize,它会在composer_classmap.php文件中扁平化每个PSR-0加载类。如果您使用像Zend这样具有PSR-0自动加载功能的库,则该类映射文件会超过3000行。这对于在每个Web请求上加载来说都不是最佳选择,所以我不想这样做。如何在不填充composer类映射文件的情况下简单地生成compiled.php文件? 最佳答案
PHP的__autoload()(documentation)对我来说非常有趣。这是它的工作原理:你尝试使用一个类,比如newToast_Mitten()(脚注1)该类尚未加载到内存中。PHP收回它的拳头,用一个错误来打击你。它暂停了。“等等,”它说。“定义了一个__autoload()函数。”它运行它。在该函数中,您以某种方式将字符串Toast_Mitten映射到classes/toast_mitten.php并告诉它需要该文件。确实如此。现在类在内存中,您的程序继续运行。内存优势:您只加载需要的类。简洁的好处:您可以停止在任何地方包含这么多文件,而只包含您的自动加载器。如果事情变得
在main.php中,添加了自动加载并创建了一个新对象:function__autoload($class){require_once($class.'.php');}...$t=newTriangle($side1,$side2,$side3);在Triangle.php中:classTriangleextendsShape{...}Shape.php是一个抽象类:abstractclassShape{abstractprotectedfunctionget_area();abstractprotectedfunctionget_perimeter();}我可以看到__autoloa
我将下面的代码作为一个自动加载类,但是看起来clean方法根本不起作用,它总是退回到dirty方法。我是否错误地使用了spl_autoload?如果是这样,正确(更好)的方法是什么?这是低效的吗,如何改进?尽管使用此方法时,我总是得到诸如bottom之类的输出,在某些情况下,它只是找不到类,但不会抛出任何错误我将显示错误设置为1并检查了错误日志,但完全丢失了。代码初始化为require"vendor/AutoLoader.class.php";self::setGlobal("autoloader",AutoLoader::init());类如下:publicstatic$instan
我有一个包含多个子文件夹的项目。在其中一个文件夹中,它们是一些“插件”。所有这些插件都有一个composer.json和一个供应商文件夹。我现在想构建自己的插件并创建一个新文件夹并将composer.json放入该目录。composerinstall没有任何问题,但是当我以某种方式安装插件时出现错误FastCGI:server"/fcgi-bin-php5-fpm-ezi"stderr:PHPmessage:PHPFatalerror:CalltoundefinedmethodComposer\\Autoload\\ClassLoader::setPsr4()什么会导致这个问题?我已经
实体Project和Course之间存在多对一关系,因为每门类(class)可以有很多项目,所以很多项目可能与同一门类(class)相关。这些是我的实体:classProject{/***@ORM\Id*@ORM\Column(type="integer")*@ORM\GeneratedValue(strategy="AUTO")*/protected$id;//...otherfields...//-----------------------DATABASERELATIONSHIP----------------////PROJECT-COURSE-M:1relationship/
根据NewRelic事务跟踪器,有时Composer\Autoload\includeFile需要大约318毫秒来加载我的项目。我已经从composer中转储了一个类映射,但仍然没有任何区别。composer.json需要以下内容:"require":{"php":">=5.3.3","zendframework/zendframework":"2.4.*","zendframework/zendservice-amazon":"2.*","wisembly/elephant.io":"~3.0","knplabs/github-api":"~1.2"}我的ZF2应用程序中只有一个模块
在服务器端的include_path中,我有一个pear目录的引用,位于“/usr/share/pear/”中。在我的应用程序中,我包含来自公共(public)库的文件,这些文件位于“/usr/share/pear/library/”中,require_once“library/file.php”。我最近开始使用spl自动加载器,我注意到在加载器函数中您必须确定包含文件的逻辑。我这样做的第一种方法是尝试包含一个文件并用@抑制它以查看它是否会失败,例如@include'library/file.php'但是我认为主要是因为我读了很多关于@的坏习惯我决定通过分解get_include_pa
我刚刚更改了所有代码以使用__autoload,发现它与joomla自动加载器冲突。在某些情况下,我将我的应用程序与joomla集成以注册用户等。我发现spl_autoload_register()显然允许许多自动加载器。我该怎么办?更新:这就是joomla所做的从/library/loader.php加载这个文件function__autoload($class){if(JLoader::load($class)){returntrue;}returnfalse;}更新2:好的,在我加载Joomla库后立即调用require_once(JPATH_BASE.DS.'includes'
现在,当我为我的Laravel应用程序设置一个新测试时,它从基础TestCase类扩展classSomeTestextendsTestCase{}我想创建一个名为AnotherTestCase的新基测试类,这样我就可以创建共享设置/拆卸/辅助方法等的测试用例...classSomeTestextendsAnotherTestCase{}但是,当我运行phpunitapp/tests/SomeTest.php出现以下错误PHPFatalerror:Class'AnotherTestCase'notfoundin/[...]/app/tests/SomeTest.phponline3尽管我