2011-02-14 30 views
9

我有一个名为“SEO_URL”的PHP类。在该类中的点我有这样的PHP类没有被发现,当它包括

$class_name = "cPath_SEO_URL"; 
return $class_name::href(); 

,我得到

Fatal error: Class 'cPath_SEO_URL' not found in 
...\includes\classes\seo.class.php on line 52 

的事情是我已经包含在SEO_URL

include_once(/path/to/my/class); 
class SEO_URL{ 

} 

顶部的类,我得到这个错误。

但是,当我在类的顶部上硬编码类SEO_URL它的作品。所以这个工作。

class cPath_SEO_URL{ 
    function cPath_SEO_URL(){} 
    function href() { return "CPathHref"; } 
} 
class SEO_URL{ 
... 
     $class_name = "cPath_SEO_URL"; 
     return $class_name::href(); 
... 
} 

这并不

include_once(/path/to/my/class); 
class SEO_URL{ 
... 
     $class_name = "cPath_SEO_URL"; 
     return $class_name::href(); 
... 
} 

我在想自从本。

这是为什么?

+0

您是否已关闭PHP警告? PHP在找不到类文件时会抛出E_WARNING异常,这通常会输出到浏览器,但可能会被禁用。 – JamesHalsall 2011-02-14 14:37:19

+2

没有冒犯,但我的90% - 猜测是类文件不正确。您应该使用require_once而不是include_once,以便在读取时发生错误(如错误的文件名/访问权限不足)会导致致命的php错误,而不仅仅是警告。 – phihag 2011-02-14 14:37:41

+0

对于@phihag来说+1表示你应该使用`require_once`而不是`include_once`,你的程序在没有包含文件的情况下无法生存。当您尝试使用相关功能时,这会在需求失败而不是奇怪错误时给您带来有用的错误。 – Spudley 2011-02-14 14:59:56

回答

24

好了,你不会相信什么问题。

我用来打开和关闭PHP文件这样

<? 
    ... 
?> 

<?php 

?> 

和类文件是没有<?php .. ?>标签,但标签<? ... ?>。我想我现在工作的环境只想要<?php而不是<?

它会加载类,但它不会解释为PHP。

1

随着

$class_name = "cPath_SEO_URL"; 
$test = new $class_name(); 
return $test::href(); 

你正在做的一个实例的静态调用。这没有意义。
相反,你会想要做

$class_name = "cPath_SEO_URL"; 
return $class_name::href();