使用命名空间自动加载编辑器和 PSR-0 类


Composer and PSR-0 class autoloading with namespaces

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

致命错误:在 中找不到类"抽象控制器" D:''xampp''htdocs''ikacFw''frontController.php 在第 7 行

常见的是看到我的作曲家.json和结构,以便更好地描绘问题。

结构是:

frontController.php
-- vendor
----- Doctrine
----- Ikac
--------- Components
---------- Mvc
------------- Controller

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

作曲家.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();

我收到错误"未找到"。

我的类抽象控制器包含定义的命名空间,但不再工作。像测试一样,我这样做:

    <?php
    //vendor/Ikac/Mvc/Controller/AbstractController.php
    namespace Ikac'Mvc'Controller;
    class AbstractController {
        function __construct() {
            echo __CLASS__;
        }
    }
    ?>

我从cmd作曲家转储自动加载安装,但不起作用。所有这些在 Linux 上的完美工作,但在这里不会。知道如何解决这个问题或我犯错的地方。

谢谢大家!

斯洛夫德:

{
    "autoload": {
        "psr-0": {
            "": "vendor/"
        }
    }
}
好吧,

你应该这样做

<?php
require_once 'vendor/autoload.php'; 
use Ikac'Mvc'Controller'AbstractController;

$a = new AbstractController();

您的自动加载声明是错误的。

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

您可以使用 Composer 为自己的课程创建自动加载。只需包含正确的信息。但是从您当前的信息中,我无法推断出正确的内容。