Originariamente inviato da Ratatuia
scusa, non mi ero accorto, ma $private è sbagliato, devi mettere private, public o protected senza il $ prima che viene usato solo anteposto al nome della proprietà e non alla sua visibilità
No scusa tu ... è un errore che ho fatto riportando il testo qua nel forum. Nel file della classe private è dichiarato in modo giusto .
---
Forse è meglio se metto due righe di spiegazione.
Sto cercando di costruire un loader per le classi utilizzando le funzioni spl quindi ho bisogno di un metodo in entrata statico, che possiamo chiamare classImport, il quale si occupa di prendere in input un parametro formato da [sezione].[directoryDelleClassi].[nomeClasse] << concatenati da un punto dove nome classe è anche il nome della directory e del file che contiene la classe... ad esempio per un ipotetica classe per la gestione db sarebbe [sezioneDelSito->directoryDelleClassi->database] e il nome della classe sarebbe Database (class Database {.
Dunque partendo dal presupposto che la funzione autoload si occupa di instanzare automaticamente la classe dopo averla caricata e che solitamente un progetto ha almeno 3 locazioni in cui "pescare" le classi:
- [rootPrincipale->class] ... per le classi specifiche ad esempio per il sito
- [rootPrincipale->common] ... dove risiedono le classi comuni a tutto il progetto
- [rootPrincipale->admin-class] ... per le classi del pannello di controllo.
A questo punto è facile immaginare che passando al metodo classImport i parametri giusti possa "comporre un path" da passare a sua volta ad una funzione autoload che si occupa del resto sfruttando o le potenzialità del metodo magico __autoload o quelle del spl_autoload che secondo me sono superiori.
In pratica ovunque fosse necessario caricare una classe al interno del progetto basterebbe una dichiarazione del tipo:
Codice PHP:
classImport ( 'admin.class.nomeClasse' );
per avere automaticamente a disposizione tutte le funzionalità della classe.
Un pò come creare una funzione autoload che in base a 2 parametri determina dove prende la classe corrispondente.
questo potrebbe essere un esempio, assumendo di avere una directory per tutte le classi e che questa si chiami class
Codice PHP:
function __autoload ( $class, $path )
{
$classes = $path . '/' . 'class' . '/' . 'class.' . $class . '.php'
require_once $classes;
}
$class = myTest();