Tüm sınıflarınızı gerçek konumlarından bağımsız hale getirmelisiniz, böylece onları kolayca hareket ettirebilir ve belki de diğer projelerde tekrar kullanabilirsiniz.
Diğer sınıflara hangi yolu veya URL'yi kullanacağını söyleyen bir sınıf oluşturabilirim, bir arabirimi uygulayalım, böylece diğer sınıfları belki bir tema içinde veya tamamen WordPress dışında da kullanabilirsiniz.
Arayüz örneği:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
Eklentinizdeki somut uygulama şöyle görünebilir:
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;
}
}
Şimdi ana eklenti dosyanızda bu sınıfın bir örneğini oluşturuyorsunuz:
$address = new PluginDirectoryAddress( __DIR__ );
Ve diğer tüm sınıfların yapıcılarındaki arayüze sadece bağımlılıkları vardır:
public function __construct( DirectoryAddress $directory ) {}
URL'ye ve yola şimdi yalnızca geçirilen örnekten erişiyorlar.
class.Plugin_Controller.php
yüksek dizindeki dosya için gerekli olması gerekir, değil mi?