您应该使所有类与它们的实际位置无关,以便您可以轻松地将它们移动,甚至可以在其他项目中重用它们。
我将创建一个告诉其他类使用什么路径或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
更高目录中的文件需要使用,对吗?