[英]Psr-4 composer autoload own class - no found
我有结构目录
自动加载作曲家:
"autoload": {
"psr-4": {
"model\\": "src/"
}
},
我的课
namespace model;
class ClientAgent
{
private $pdo;
public function __construct(\PDO $pdo)
{
$this->pdo = $pdo;
}
public function sentAgent()
{
}
}
在index.php
我尝试添加
use model\\ClientAgent;
但是它抛出错误,找不到类? 为什么?
答案后编辑
"autoload": {
"psr-4": {
"model\\": "src/model/"
}
},
我的index.php
use model\ClientAgent;
$loader=require_once __DIR__ . '/../vendor/autoload.php';
$clientAgent =new ClientAgent($pdo);
错误未捕获的错误:在C:\\ xampp \\ htdocs \\ Wieloagenty \\ index.php:15中找不到类'model \\ ClientAgent'
"model\\\\": "src/"
将为您提供文件夹src/
作为model
-namespace的基础。 因此,这将为您提供model\\model\\Classname
。
更改为:
"psr-4": {
"model\\": "src/model/"
}
在composer中定义psr-4自动加载器时,会将文件夹与特定的命名空间相关联。
任何子文件夹将是一个子命名空间。 因此,如果在“模型”文件夹中创建一个文件夹,则名称空间将为: model\\new-foldername\\Classname
,依此类推。
注意:每当您更新composer.json文件时,始终需要运行以下命令: composer dump-autoload
以使composer重新生成所有其缓存的文件。
我的建议是引入一个供应商前缀。 可能是您的开发人员名称,您的公司名称或应用程序的名称。
composer.json
"autoload": {
"psr-4": {
"YourApplication\\": "src/"
}
},
现在, src
文件夹及其以下的每个类在其名称空间上都需要此供应商前缀。
让我们以src\\model\\ClientAgent.php
为例:
namespace YourApplication\Model;
class ClientAgent
{
现在,FQCN(完全合格的类名称)为YourApplication\\Model\\ClientAgent
,您可以将其用作use
声明的一部分。
// first require the Composer autoloader
require_once __DIR__ . '/../vendor/autoload.php';
// declare which other classes you are using
use YourApplication\Model\ClientAgent;
$clientAgent = new ClientAgent($pdo);
重要!
修改后(对类和composer.json
文件),请使用php composer.phar dumpautoload -o
重新生成Composer自动加载器。
Composer将扫描整个src
文件夹,包括子文件夹的类(因此您将准备好src\\models\\
和src\\views
自动加载的所有类)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.