簡體   English   中英

Composer自動加載-如何從不同的文件夾獲取類,特征,接口?

[英]Composer autoload - How to fetch classes, traits, interfaces from different folders?

如何使用composer自動加載功能從不同的文件夾中獲取類,特征,接口?

其中一些我使用名稱空間,例如,

控制器/ Foo.php,

namespace MyNamespace;
class Foo
{
    public $message = 'hello Foo';
}

模型/ Boo.php

namespace MyNamespace;
class Boo
{
    public $message = 'hello Boo';
}

index.php文件,

// Composer.
require 'vendor/autoload.php';

use \MyNamespace\Foo;
$Foo = new Foo();
var_dump($Foo);

錯誤,

致命錯誤:在C:中找不到類'MyNamespace \\ Foo'

composer.json,

{
    "autoload": {
        "psr-0": {
            "": "ext/",
            "": "controller/",
            "": "model/" 
        }
    }
}

我在許多不同的文件夾中有很多類(可能會擴展),所以當我在新文件夾中有新類時,有什么方法可以不重新安裝 composer autoload嗎?

您必須標准化名稱空間和文件夾結構。 如果在不同的文件夾中具有相同的名稱空間,則很難創建一個簡單的邏輯來自動加載它們。 嘗試在名稱空間中使用另一個細分,例如:

namespace MyNamespace\Controller;
class Foo
{
    public $message = 'hello Foo';
}

和:

namespace MyNamespace\Model;
class Boo
{
    public $message = 'hello Boo';
}

並在您的composer.json中:

{
    //..
    "autoload": {
        "psr-4": {
             "MyNamespace\\Model\\": "/path/to/model/folder/",
             "MyNamespace\\Controller\\": "/path/to/controller/folder/"
        }
    }
}

設置好之后,請致電:

composer dump-autoload

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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