Salve.
Sto cercando di collegare le varie pagine di un lavoro con la cartelle dove sono contunute le classi in modo tale da non dover chiamare classe per classe singolarmente ma di far richiamare allo script automaticamente la classe di cui esso necessita. Per questo scopo sto utilizzando uno script (non mio) :
Classe loader
Per testarlo utilizzo questa classe provaCodice PHP:class autoloader {
public static $loader;
public static function init()
{
if (self::$loader == NULL)
self::$loader = new self();
return self::$loader;
}
public function __construct()
{
spl_autoload_register(array($this,'myclass'));
}
public function myclass($class)
{
set_include_path(get_include_path().PATH_SEPARATOR.$_SERVER['DOCUMENT_ROOT'].'/autoload_esempio_utilizzo/classe');
spl_autoload($class);
}
}
//call
autoloader::init();
e per richiamare il tutto:Codice PHP:class ClasseSaluto{
public $quale_saluto;
public function getSaluto ($quale_saluto){
$this ->quale_saluto= $quale_saluto;
return $this -> quale_saluto;
}
}
class SalutoTabella extends ClasseSaluto{
public function salutoDentroTab ($quale_saluto){
$tabella="<table border='3'> \n <tr>\n<td>".parent::getSaluto($quale_saluto)."</td>\n</tr>\n</table>";
return $tabella;
}
}
In questa maniera funziona ma se cerco di chiamare il metodo della classe figlio salutoDentroTab ottengoCodice PHP:require_once($_SERVER['DOCUMENT_ROOT'].'/autoload_esempio_utilizzo/loader.php');
$salutami =new ClasseSaluto();
print $salutami -> getSaluto("ciao Bello");
cioè la classe figlio non viene trovata.Codice PHP:Fatal error: Class 'SalutoTabella' not found in...
Ho trovato questa soluzione :
cioé chiamo prima la classe padre e poi quello figlio e cosi funziona ma non mi sembra la soluzione più adatta.Codice PHP:require_once($_SERVER['DOCUMENT_ROOT'].'/autoload_esempio_utilizzo/loader.php');
$salutami =new ClasseSaluto();
$salutami = new SalutoTabella();
print $salutami -> salutoDentroTab("ciao Bello");
Avete qualche suggerimento?

Rispondi quotando