我有ZF2应用程序,在根级别我是我的供应商文件夹。 (经典骨架应用) 在供应商中,包含我使用composer更新和安装的所有库。
在供应商下需要添加自定义类并自动加载它。
使用composer并编写像这样的自动编辑器
"autoload": {
"psr-4": {
"ciromar\\": "/vendor/ciromar/src"
}
现在文件夹结构如下:
vendor
--ciromar
---- src
------ Log
-------- Writer
---------- FileRotator.php (class)
该类的名称空间是FileRotator.php
namespace ciromar\Log\Writer;
我的应用程序的控制器
use ciromar\Log\Writer\FileRotator;
IndexController class extends AbstractActionController
{
public function indexAction ()
{
$fr = new FileRotator("");
}
}
错误
Fatal error: Class 'ciromar\Log\Writer\FileRotator' not found in /var/www/html/myapp/module/Application/src/Application/Controller/IndexController.php on line 21
答案 0 :(得分:0)
您应该以这种方式设置路径
"autoload": {
"psr-4": {
"ciromar\\": "./vendor/ciromar/src"
}
但我认为您不应该手动将自定义模块放到供应商处。 您应该像模块一样开发它,然后添加自己的模块composer.json,接下来将模块添加到packagist,然后在项目中需要您的模块composer.json和composer将它自动下载到vendor /。
如果您只想为app模块加载PSR-4,请将其放在app modules目录中,并将自动加载规则添加到composer.json
例如 https://samsonasik.wordpress.com/2014/01/11/zend-framework-2-using-psr-4-autoloader-in-module/