Php 在Zend 1.12中使用Composer自动加载程序(用于加载外部库)?
基本上,我希望使用Composer自动加载程序(用于加载第三方库),但我希望继续使用Zend 1.12中的内置机制来自动加载 我添加了以下代码:Php 在Zend 1.12中使用Composer自动加载程序(用于加载外部库)?,php,zend-framework,composer-php,autoload,Php,Zend Framework,Composer Php,Autoload,基本上,我希望使用Composer自动加载程序(用于加载第三方库),但我希望继续使用Zend 1.12中的内置机制来自动加载 我添加了以下代码: <?php // File path: index.php // ... $composerAutoloaderPaths = array( '../vendor/autoload.php', '../../common/vendor/autoload.php' // store common libraries used
<?php // File path: index.php
// ...
$composerAutoloaderPaths = array(
'../vendor/autoload.php',
'../../common/vendor/autoload.php' // store common libraries used by multiple projects, currently that's working by adding the directory in set_include_path()
);
foreach($composerAutoloaderPaths as $composerAutoloaderPath)
{
if(file_exists($composerAutoloaderPath))
{
require_once $composerAutoloaderPath;
}
else
{
// handle the error gracefully
}
}
// ...
像这样使用Composer和Zend Autoloader有什么值得担心的吗?您可以像这样在bootstrap.php中自动加载供应商:
您可以在bootstrap.php中自动加载供应商,如下所示:
我不得不佩服你对ZF1的韧性,我们都在10年前就已经做到了。Zend Framework 1.x在其类中充满了require_。
您可以随时在Bootstrap.php文件上再次要求使用另一个文件。我不得不佩服您对ZF1的弹性,我们都在10年前就有了。Zend Framework 1.x在其类中充满了require_。
您可以随时在Bootstrap.php文件上请求另一个文件,我经常遇到这个问题,我相信这不是实际问题
IMO最好的方法是只在public/index.php
中包含composer autoloader,就像在ZF2/3中那样。这不会改变自动加载的其余部分:
注意:如果在应用程序中使用了另一个入口点(例如cron脚本),则需要添加相同的行(基本上在应用程序的每个入口点中)
此外,如果您查看phpmd中的规则,则会显示以下消息:
一个文件应该声明新的符号(类、函数、常量等),并且不会产生其他副作用,或者它应该执行带有副作用的逻辑,但不应该同时执行这两个操作
因此,在引导中声明包含供应商自动加载器可能被视为一种不当行为(至少似乎是编写此规则的人和我之间的共同观点:)。我经常遇到这个问题,我相信这不是一个实际问题
IMO最好的方法是只在public/index.php
中包含composer autoloader,就像在ZF2/3中那样。这不会改变自动加载的其余部分:
注意:如果在应用程序中使用了另一个入口点(例如cron脚本),则需要添加相同的行(基本上在应用程序的每个入口点中)
此外,如果您查看phpmd中的规则,则会显示以下消息:
一个文件应该声明新的符号(类、函数、常量等),并且不会产生其他副作用,或者它应该执行带有副作用的逻辑,但不应该同时执行这两个操作
因此,在引导中声明包含供应商自动加载器可能被视为一种不当行为(至少似乎是编写此规则的人和我之间的共同观点:)
<?php // File path: Bootstrap.php
// ...
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Plugin_');
$autoloader->registerNamespace('Helper_');
// etc.
// ...