簡體   English   中英

PSR-4作曲家自動加載自己的課程-找不到

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM