すべてのクラスを実際の場所から独立させる必要があります。そうすれば、クラスを簡単に移動したり、他のプロジェクトで再利用したりできます。
使用するパスまたはURLを他のクラスに伝えるクラスを作成し、インターフェイスを実装して、他のクラスをテーマ内またはWordPress以外で再利用できるようにします。
インターフェースの例:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
プラグインの具体的な実装は次のようになります。
class PluginDirectoryAddress implements DirectoryAddress
{
private $path;
private $url;
public function __construct( $dirpath )
{
$this->url = plugins_url( '/', $dirpath );
$this->path = plugin_dir_path( $dirpath );
}
/**
* @return string Dir URL with trailing slash
*/
public function url() {
return $this->url;
}
/**
* @return string Dir path without trailing slash
*/
public function path() {
return $this->path;
}
}
次に、メインプラグインファイルにそのクラスのインスタンスを作成します。
$address = new PluginDirectoryAddress( __DIR__ );
そして、他のすべてのクラスは、次のように、コンストラクターのインターフェースに依存しています。
public function __construct( DirectoryAddress $directory ) {}
現在、渡されたインスタンスからのみURLとパスにアクセスしています。
class.Plugin_Controller.php
上位ディレクトリのファイルで必要になる必要がありますか?