具有名称空间的Composer和PSR-0类自动加载

时间:2013-11-17 15:35:33

标签: php composer-php psr-0

大家好,我在使用作曲家自动加载课程时遇到问题。在Linux上所有工作都很完美,但现在我的老板改变环境并设置Windows。所有这些都在linux上工作,但是windows显示新手致命的错误:

  

致命错误:未找到类'AbstractController'   第7行的D:\ xampp \ htdocs \ ikacFw \ frontController.php

通常可以看到我的composer.json和结构,以便更好地了解问题。

结构是:

frontController.php

-- vendor
----- Doctrine
----- Ikac
--------- Components
---------- Mvc
------------- Controller

我尝试从供应商目录加载所有数据。

Composer.json

{
    "autoload": {
        "psr-0": {
            "vendor": ""
        }
    }
}

我也添加了手册。像这样:

$loader = require_once 'vendor/autoload.php'; 
$loader->add('vendor', "Ikac");

接下来当我试着打电话时:

<?php
require_once 'vendor/autoload.php'; 

use Ikac\Mvc\Controller;


$a = new AbstractController();

我收到错误“找不到”。

我的类AbstractController包含已定义的命名空间但不再工作。像测试我这样做:

    <?php
    //vendor/Ikac/Mvc/Controller/AbstractController.php

    namespace Ikac\Mvc\Controller;

    class AbstractController {

        function __construct() {
            echo __CLASS__;
        }
    }

    ?>

我是从cmd composer dump-autoload 安装做的,但是不行。所有这些完美的工作在Linux上,但在这里不会。任何想法如何解决这个或我错误的地方。

谢谢你们!

SLOVED:

{
    "autoload": {
        "psr-0": {
            "": "vendor/"
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你应该做的

<?php
require_once 'vendor/autoload.php'; 

use Ikac\Mvc\Controller\AbstractController;


$a = new AbstractController();

答案 1 :(得分:0)

您的自动加载声明错误。

您永远不需要在任何自动加载中包含供应商文件夹。供应商文件夹将包含所有依赖项的自动加载,以及 - 如果已配置 - 也适用于您自己的类。

您可以使用Composer为您自己的类创建自动加载。只需包含正确的信息。但是根据您当前的信息,我无法推断出什么是正确的。