すぐに言えば、私はコアプラグインと追加のプラグインがある場所でWordPressを使って 'エコシステム'を構築しようとしています。WordPress PSP-4名前空間プラグイン別の名前空間付きプラグインへのアクセス
各アドオンプラグインでは、コアプラグインが機能する必要があります。私はWordPressの標準コーディングとファイル構造を使ってこれを達成しました。私は今、名前空間PSR-4、作曲、バウアーを使用するには、このプロジェクトを再加工等
標準のWordPressの作曲
"autoload": {
"psr-4": {
"CorePlugin\\Library\\": "library"
}
}
経由
|
|__www
|
|___wp-admin
|
|___wp-content
| |
| |___plugins
| | |
| | |___my-core-plugin
| | | |
| | | |___library
| | | | |
| | | | |___class-post-register.php
| | | |
| | | |___vendor
| | | | |
| | | | |___autoload.php
| | | |
| | | |___composer.json
| | | |
| | | |___core.php
| | |
| | |___my-first-addon-plugin
| | | |
| | | |___library
| | | |
| | | |___vendor
| | | | |
| | | | |___autoload.php
| | | |
| | | |___composer.json
| | | |
| | | |___core.php
| | |
| | |___my-second-addon-plugin
| | | |
| | | |___library
| | | |
| | | |___vendor
| | | | |
| | | | |___autoload.php
| | | |
| | | |___composer.json
| | | |
| | | |___core.php
| | |
| |___themes
| | |
| | |___my-custom-theme
| |
| wp-includes
コア・プラグインのPSR4をインストールしていますコアプラグインクラスの例
<?php
namespace CorePlugin\library;
class Post_Register {
private __construct() {
// ... code
}
private init() {
}
private register($data) {
// .. code to register a custom post for example.
}
}
まずアドオンプラグインのPSR4作曲経由
"autoload": {
"psr-4": {
"FirstAddon\\Library\\": "library"
}
}
クラスをアドオンプラグイン以下
から、私は混乱しているところです。私は別の名前空間にコアプラグインからクラスを使用しようとしていると私はエラーを取得しています:私はuse
にことができると思いますけれども
Fatal error: Class 'CorePlugin\Library\Post_Register' not found in...
は、どちらのプラグインは、それぞれの作曲は私ので、自動ロードファイルを生成AUTOLOAD名前空間。 PHPマニュアル(http://php.net/manual/en/language.namespaces.php)のこの部分を掘り下げる前に、私はここに来て、おそらくサブネームスペースを試してみることにしました。
<?php
namespace FirstAddon;
use CorePlugin\Library\Post_Register;
class First_Addon {
private __construct() {
// ... code
}
private init() {
}
private another_function() {
}
}
また、私は、例えば、laravelで、use
のfoo \バー、理由はブラケットでサブ名前空間を使用して躊躇しています。およびuse
バー\ foo;そのようです。
<?php namespace App\Services;
use App\User;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
class Registrar implements RegistrarContract {