【发布时间】:2014-05-02 13:34:54
【问题描述】:
我之前有一个非常简单的自动加载脚本运行良好,但是当我注意到 Doctrine2 正在为此使用 Composer 时,我认为简化所有内容可能会很好。不幸的是,Composer 似乎并没有像我理解的那样工作。
这是我的 composer.json 的相关部分
"autoload": {
"psr-0": {
"": "models/",
"Catalog2\\Config": "class/"
}
}
请注意,Doctrine2 使用的"": "models/" 行运行良好。在我运行 composer update 之后,我的 vendor/composer/autoload_namespaces.php 的底部看起来像这样:
'Doctrine\\Common\\' => array($vendorDir . '/doctrine/common/lib'),
'Catalog2\\Config' => array($baseDir . '/class'),
'' => array($baseDir . '/models'),
到目前为止一切都很好,我想。在我的routes.php 文件(基本上是一个前端控制器)中,我有以下内容:
<?php
use Catalog2\Config;
//autoload classes
require_once __DIR__.'/vendor/autoload.php';
try {
$router = new Router;
} catch(Exception $e ) {
echo "<strong>Can't create router object</strong><br/>";
}
这里Catalog2\Config\Router应该是调用我的class/Router.php,开头如下:
<?php
namespace Catalog2\Config;
class Router {
protected $resource; //what are we manipulating? A product? An order?
protected $action; //what are we doing with that resource?
当我转到该页面时,我得到了这个:
Fatal error: Class 'Router' not found in /home/tom/Code/productCatalog2/routes.php on line 14
这里出了什么问题?我再说一遍,Doctrine2 能够从 /models 自动加载我的模型代码,那么为什么我的更改不起作用?
【问题讨论】:
标签: php composer-php autoload autoloader