【发布时间】:2015-04-09 09:59:14
【问题描述】:
我在从我的应用程序中自动加载模块控制器类时遇到问题。我尝试配置 composer.json 但仍然无法正常工作。可能在这个目录结构上做错了什么。我尝试了 composer doc 中的示例,但再次不起作用...
目录结构:
|- admin
|----- modules
|--------- Menu
|------------Controller
|--------------MenuController.php
让我们看看 composer.json
{
"autoload": {
"psr-0": { "Admin\\Modules\\": "" }
}
}
我尝试设置路径但没有再次设置 // "Admin\Modules\": "admin/modules"
菜单控制器:
namespace Admin\Modules\Menu\Controller;
class MenuController extends AbstractAdminBaseController
前端控制器
require 'vendor/autoload.php';
new \Admin\Modules\Menu\Controller\MenuController();
找不到所有时间类。我尝试了 100 个来自 google 的示例,但一无所获。任何例子如何减缓这个问题?谢谢
更新结构:
├───admin
│ └───modules
│ └───Menu
│ └───controller
│ └───MenuController.php
├───vednor
│ └───autoload.php
│ └───composer
│ └───autoload_classmap.php
│ └───autoload_namespaces.php
│ └───autoload_psr4.php
│ └───autoload_real.php
│ └───ClassLoader.php
├───public
├───assets
├───index.php
├───composer.json
├───composer.lock
【问题讨论】:
-
当您使用命名空间时,也许您应该使用PSR-4(符合命名空间)自动加载器,而不是 PSR-0 自动加载器
-
在 psr-0 之后我用 psr-4 试试这个。使用 psr-4 我必须在作曲家中定义所有模块名称,如
Menu、Product。 -
你能发布完整的目录结构吗? (composer.json、autoload.php、FrontController.php、MenuController.php 的完整路径)
-
您使用的是哪个操作系统?如果您使用的是区分大小写的操作系统,您的问题可能是由于目录名称与命名空间的大小写不匹配造成的。尝试使用完全相同的大小写(
Admin代替admin、Modules代替modules等)
标签: php composer-php