[英]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.