Ho una classe in php denominata "SEO_URL". In un punto in quella classe ho questoclasse php non trovata quando è inclusa
$class_name = "cPath_SEO_URL";
return $class_name::href();
e ottengo
Fatal error: Class 'cPath_SEO_URL' not found in
...\includes\classes\seo.class.php on line 52
Il fatto è che ho incluso la classe in cima SEO_URL
include_once(/path/to/my/class);
class SEO_URL{
}
e ottengo questo errore .
Tuttavia, quando indico la classe sopra alla classe SEO_URL, funziona. Quindi questo funziona.
class cPath_SEO_URL{
function cPath_SEO_URL(){}
function href() { return "CPathHref"; }
}
class SEO_URL{
...
$class_name = "cPath_SEO_URL";
return $class_name::href();
...
}
e questo non
include_once(/path/to/my/class);
class SEO_URL{
...
$class_name = "cPath_SEO_URL";
return $class_name::href();
...
}
sto provando questo in osCommerce.
Perché è quello?
Hai avvisi PHP disattivati? PHP genererà un'eccezione E_WARNING quando non è in grado di trovare il file di classe, di solito verrà trasmesso al browser ma potrebbe essere disabilitato. – JamesHalsall
Senza offesa, ma la mia ipotesi del 90% è che il file di classe non è corretto. Dovresti usare require_once invece di include_once in modo che un errore durante la lettura (come nome file errato/diritti di accesso insufficienti) causi un errore php fatale invece di un semplice avvertimento. – phihag
+1 per @phihag per aver detto che dovresti usare 'require_once' piuttosto che' include_once' dove il tuo programma non può vivere senza il file incluso. Questo ti darà errori utili quando il bisogno fallisce piuttosto che strani errori quando cerchi di utilizzare le funzioni correlate. – Spudley