您应该使所有类独立于它们的实际位置,以便可以轻松地移动它们,并可能在其他项目中重用它们。
我将创建一个类,告诉其他类使用什么路径或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和路径。