Dovresti rendere tutte le tue lezioni indipendenti dalla loro posizione attuale, in modo da poterle spostare facilmente e magari riutilizzarle in altri progetti.
Vorrei creare una classe che indichi alle altre classi quale percorso o URL utilizzare, lasciandolo implementare un'interfaccia in modo da poter riutilizzare le altre classi magari anche in un tema o completamente al di fuori di WordPress.
Esempio per l'interfaccia:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
L'implementazione concreta nel tuo plugin potrebbe apparire così:
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;
}
}
Ora crei un'istanza di quella classe nel tuo file plugin principale:
$address = new PluginDirectoryAddress( __DIR__ );
E tutte le altre classi hanno solo una dipendenza dall'interfaccia nel loro costruttore, in questo modo:
public function __construct( DirectoryAddress $directory ) {}
Ora accedono all'URL e al percorso solo dall'istanza passata.
class.Plugin_Controller.php
dovrebbe essere richiesto dal file nella directory superiore, giusto?