簡體   English   中英

我應該如何使用composer自動加載WordPress插件類進行測試?

[英]How should I autoload WordPress plugin classes using composer for testing?

我正在按照WordPress編碼標准開發WordPress插件。

這是插件的當前結構:

.
├── includes
├── languages
├── views
├── class-plugin-admin.php
├── class-plugin.php
└── plugin.php

就是說,我想使用Composer自動加載器加載兩個類(用於單元測試)。

今天,我一直在像這樣加載它們:

"autoload-dev": {
    "files": [
        "class-plugin.php",
        "class-plugin-admin.php"
    ]
}

但是,不確定此方法是否是最佳方法。

所以這是問題:

  • 我應該將類移到插件的子目錄中嗎?
  • 哪一種是通過作曲家加載它們的最佳方法?

我應該將類移到插件的子目錄中嗎?

您不需要,但是可以。 它無疑使開發插件變得容易得多,我建議這樣做。

如您所指出的,您可能已經進行了測試,所以為什么不繼續進行結構調整,使其類似於以下內容:

.
├── includes
├── languages
├── src
│   ├── Plugin.php
│   └── PluginAdmin.php
├── test
│   ├── PluginAdminTest.php
│   ├── PluginTest.php
│   └── phpunit.xml
├── views
├── composer.json
└── plugin.php

注意,我調整了類名,因為理想情況下,您可能希望對類使用某種方式的PSR-4自動加載。

供參考,請參閱:

哪一種是通過作曲家加載它們的最佳方法?

這在很大程度上取決於您是否要將類移動到子目錄。 假設您這樣做了,並假設您使用Toally\\Amazing作為類的名稱空間前綴:

PSR-4

使用PSR-4自動裝帶器:

{ 
    "autoload-dev": {
        "Totally\\Amazing\\": "src/"
    }
}

供參考,請參閱:

類映射

列出包含類的目錄:

{
    "autoload-dev": {
        "classmap": [
            "src/",
        ]
    }
}

供參考,請參閱:

自己決定哪個對您最有意義!

在生產中自動加載

如您所見,我使用autoload-dev部分來指示composer自動加載僅與開發相關,而與生產無關。 您仍然需要

  • 需要plugin.php
  • plugin.php為您的類實現自動加載

看一眼

其中提供了從插件自動加載類的相應示例。

暫無
暫無

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

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