Tengo una clase en php llamada "SEO_URL". En un momento en que la clase tengo esteclase php no encontrada cuando está incluida
$class_name = "cPath_SEO_URL";
return $class_name::href();
y consigo
Fatal error: Class 'cPath_SEO_URL' not found in
...\includes\classes\seo.class.php on line 52
la cosa es que han incluido la clase en la parte superior de SEO_URL
include_once(/path/to/my/class);
class SEO_URL{
}
y me sale ese error .
Sin embargo, cuando codifico la clase en la parte superior de la clase SEO_URL, funciona. Entonces esto funciona
class cPath_SEO_URL{
function cPath_SEO_URL(){}
function href() { return "CPathHref"; }
}
class SEO_URL{
...
$class_name = "cPath_SEO_URL";
return $class_name::href();
...
}
y esto no
include_once(/path/to/my/class);
class SEO_URL{
...
$class_name = "cPath_SEO_URL";
return $class_name::href();
...
}
Estoy tratando esto en osCommerce.
¿Por qué es eso?
¿Tiene advertencias PHP desactivadas? PHP lanzará una excepción E_WARNING cuando no pueda encontrar su archivo de clase, esto generalmente se enviará al navegador pero puede estar deshabilitado. – JamesHalsall
Sin ofender, pero mi conjetura del 90% es que el archivo de la clase no es correcto. Debería usar require_once en lugar de include_once para que un error al leerlo (como el nombre de archivo incorrecto/derechos de acceso insuficientes) provoque un error de php fatal en lugar de solo una advertencia. – phihag
+1 para @phihag por decir que debe usar 'require_once' en lugar de' include_once' donde su programa no puede vivir sin el archivo incluido. Esto le dará errores útiles cuando el requerimiento falla en lugar de errores extraños cuando intenta usar las funciones relacionadas. – Spudley