Php Psr-4编写器自动加载自己的类-未找到
我有一个目录结构 自动加载作曲家:Php Psr-4编写器自动加载自己的类-未找到,php,namespaces,composer-php,autoload,Php,Namespaces,Composer Php,Autoload,我有一个目录结构 自动加载作曲家: "autoload": { "psr-4": { "model\\": "src/" } }, 我的班级 namespace model; class ClientAgent { private $pdo; public function __construct(\PDO $pdo) { $this->pdo = $pdo; } public function sentA
"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/"
}
},
my 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
命名空间的基础。因此,这将为您提供model\model\Classname
将其更改为:
"psr-4": {
"model\\": "src/model/"
}
在composer中定义psr-4 autoloader时,将文件夹与特定命名空间相关联
任何子文件夹都将是子命名空间。因此,如果在“model”文件夹中创建一个文件夹,名称空间将是:model\newfoldername\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 autoloader
Composer将扫描完整的
src
文件夹,包括类的子文件夹(这样您将拥有src\models\
和src\views
自动加载准备中的所有类)。更改Composer.json后是否运行:Composer dump autoload
?如果没有,您需要这样做,以便composer重新生成它的自动加载文件。@Pablos-不确定您是否收到关于我的评论的任何通知(忘记引用您)。:)