Php Composer和PSR-0类使用名称空间自动加载
大家好,我有问题自动加载我的类与作曲家。在Linux上所有的操作都很完美,但现在我的老板改变了环境并设置了Windows。所有这些在linux上工作,但windows显示新手致命错误: 致命错误:在中找不到类“AbstractController” 第7行的D:\xampp\htdocs\ikacFw\frontController.php 常见于查看我的composer.json和结构,以便更好地了解问题 结构是:Php Composer和PSR-0类使用名称空间自动加载,php,composer-php,psr-0,Php,Composer Php,Psr 0,大家好,我有问题自动加载我的类与作曲家。在Linux上所有的操作都很完美,但现在我的老板改变了环境并设置了Windows。所有这些在linux上工作,但windows显示新手致命错误: 致命错误:在中找不到类“AbstractController” 第7行的D:\xampp\htdocs\ikacFw\frontController.php 常见于查看我的composer.json和结构,以便更好地了解问题 结构是: frontController.php -- vendor ----- Do
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();
你应该这样做
<?php
require_once 'vendor/autoload.php';
use Ikac\Mvc\Controller\AbstractController;
$a = new AbstractController();
您的自动加载声明错误
您永远不需要在任何自动加载中包含供应商文件夹。供应商文件夹将包含所有依赖项的自动加载,以及(如果已配置)您自己的类的自动加载
您可以使用Composer为自己的类创建自动加载。只需包含正确的信息。但从你目前的信息中,我无法推断出什么是正确的。我已经这样做了,你可以在帖子中看到。当我再次添加\Controller时,我得到了一些错误no您错过了use关键字中的“AbstractController”最后一部分。当你“使用”一个类时,你必须指定完整的路径。当我在最后一部分添加AbstractController关键字时,我再次得到一个致命的错误:类“Ikac\Mvc\Controller\AbstractController”在\uuuuuuuuu中找不到为什么你认为这是一个错误的语句?同样的程序也使用Simfony框架。他们也有类似的声明。你能澄清一下你所有涉及的文件都在哪里吗?frontController.php
在哪里,为什么vendor
文件夹中的内容在那里?我想它是由Composer放在那里的——如果是这种情况,那么提到的Composer.json
是错误的,调用$loader->add()
.frontController.php的尝试也在根目录中。IDK这是我从linux复制到Windows的所有东西,就在这里我遇到了问题。在linux上,这项工作可能与权限有关?你能检查一下require是否有效吗?如果你使用Composer获取供应商目录的内容,那么应该自动加载这些内容。该“解决方案”声明“所有内容”都在“供应商”目录中。这可能是错误的。
{
"autoload": {
"psr-0": {
"": "vendor/"
}
}
}
<?php
require_once 'vendor/autoload.php';
use Ikac\Mvc\Controller\AbstractController;
$a = new AbstractController();