3

可能重复:
稍后在同一文件中定义的派生类“不存在”?

有没有人知道为什么我在下面的 if 语句中尝试初始化它时出现致命错误:找不到类“PublicacionController”?

--PublicacionController.php--
<?php
/*Some random includes, those are 
right as far as Im concerned*/

//AJAX call
if(!empty($_POST)){
    if($_POST['call']=='nuevaPublicacion'){
        $pc = new PublicacionController();
        $pc->nuevaPublicacion($_POST);
        exit;
    }
}

class PublicacionController extends Controller{/* STUFF*/}
?>

它是一个文件。我从 AJAX 调用中调用控制器(不知道是否与它有关)。

我正在运行一个标准的 Amazon Ec2 实例,使用 Amazon Linux 以及来自 repos 的默认 https 和 PHP 版本(我认为同一个 Fedora 使用)。

4

3 回答 3

8

PHP 类应在实例化之前定义,请参阅PHP OO 文档的“新”部分

实现这一点的一种简单方法是首先声明类,然后声明主代码:

--PublicacionController.php--
<?php
/*Some random includes, those are 
right as far as I'm concerned*/

class PublicacionController extends Controller{/* STUFF*/}

//AJAX call
if(!empty($_POST)){
    if($_POST['call']=='nuevaPublicacion'){
        $pc = new PublicacionController();
        $pc->nuevaPublicacion($_POST);
        exit;
    }
}

?>
于 2012-10-01T15:04:18.153 回答
1

它是一个 AJAX 调用这一事实与它没有任何关系,但调用代码位于类声明之上的事实却如此。

交换代码,或者更好的是,将其移动到单独的文件中。

于 2012-10-01T15:05:06.013 回答
1

这是一个PHP ERROR看:稍后在同一个文件中定义的派生类“不存在”?

如果你跑

if (! empty($_POST)) {
    if ($_POST['call'] == 'nuevaPublicacion') {
        $pc = new PublicacionController();
        $pc->nuevaPublicacion($_POST);
        exit();
    }
}

class Controller {
    function nuevaPublicacion($array) {
    }
}
class PublicacionController extends Controller {/* STUFF*/

上面的代码可以正常工作,只要Controller通过外部文件包含它就会开始产生错误。

建议在使用之前声明所有类,尤其是在处理继承时

于 2012-10-01T15:06:50.427 回答