第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PSR-0 自動加載器問題

PSR-0 自動加載器問題

PHP
ibeautiful 2021-11-26 15:35:23
我在PSR-0自動加載的項(xiàng)目中按路徑實(shí)例化類時遇到問題。結(jié)構(gòu)如下:| - src/|    - Models/|        - My_New_Model_Migration.php|        - ...|    SeederCommand.php| - vendor/|     - ...| composer.json和 Composer 自動加載器:"autoload": {    "psr-0": {        "" : [            "src/"        ]    }}不要在SeederCommand課堂上講太多,它基本上是一個 Doctrine/migrations 類,它應(yīng)該使用up()和down()方法創(chuàng)建遷移。在負(fù)責(zé)生成這些的函數(shù)中,我有這部分:if (file_exists(__DIR__ . "/Models/{$model}_Migration.php")) {    $class = "{$model}_Migration";    $instantiated = new $class;    ....}當(dāng)回顯時,我注意到文件確實(shí)存在,所以這部分工作正常。但是,在更新課程時,我收到一個錯誤:PHP 致命錯誤:未捕獲的錯誤:在 /var/www/html/.../src/SeederCommand.php:97 中找不到類“/var/www/html/.../src/Models/My_New_Model_Migration.php”由于路徑是正確的,我認(rèn)為問題一定是PSR-0自動加載器通過下劃線解析路徑來工作的?有辦法解決嗎?
查看完整描述

2 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個贊

類名中不能有下劃線,目錄結(jié)構(gòu)中也不能有下劃線。

如果您的類名為Models_MyWhatever_Migration,因?yàn)槟谶w移期間動態(tài)地將字符串“MyWhatever”添加到類名,則該類必須放置在src/Models/MyWhatever/Migration.php. 你不能把它放在src/Models/MyWhatever_Migration.php.

如果您想保留下劃線作為文件名的一部分,您必須切換到 PSR-4 并使用命名空間。


查看完整回答
反對 回復(fù) 2021-11-26
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個贊

創(chuàng)建新類的實(shí)例時出錯

$class = __DIR__ . "/Models/{$model}_Migration.php";

$instantiated = new $class;

這是錯誤的,因?yàn)槟荒芡ㄟ^其文件名創(chuàng)建類的實(shí)例,例如:


$instance = new /var/www/html/.../Class.php; // <-- wrong

相反,您需要使用類名和命名空間:


$instance = new \Project\Namespace\Class;

所以在你的具體情況下,它可能是這樣的


$class = "\\Project\\Models\\".$model."_Migration";

// ^ depends on the real namespace and name of your migration classes

$instantiated = new $class;

PSR-0 和下劃線

再次閱讀PSR-0 標(biāo)準(zhǔn)后,老實(shí)說,我認(rèn)為在使用 PSR-0 時無法實(shí)現(xiàn)您想要的(類名帶有下劃線但沒有目錄)。該標(biāo)準(zhǔn)明確指出:


CLASS NAME 中的每個 _ 字符都轉(zhuǎn)換為 DIRECTORY_SEPARATOR。


可能的解決方案:Classmap 自動加載器

但是您可以對這些文件使用作曲家的類映射自動加載器:


該映射是通過掃描給定目錄/文件中所有 .php 和 .inc 文件中的類來構(gòu)建的。您可以使用類映射生成支持為所有不遵循 PSR-0/4 的庫定義自動加載。要配置它,您可以指定所有目錄或文件來搜索類。


它可能看起來像這樣(但我無法對其進(jìn)行測試):


"autoload": {

    "psr-0": {

        "" : [

            "src/"

        ]

    },

    "classmap": ["src/Models/"]

}


查看完整回答
反對 回復(fù) 2021-11-26
  • 2 回答
  • 0 關(guān)注
  • 177 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號