在同一文件中找不到类

Hit*_*kun 3 php initialization class

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

有没有人有轻微的想法为什么我得到致命错误:尝试在下面的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*/}
?>
Run Code Online (Sandbox Code Playgroud)

它是一个单独的文件.我从一个AJAX调用调用控制器(如果它与某些事情有关,则不知道).

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

Fen*_*ton 6

应该在实例化之前定义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;
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

  • -1.PHP首先解析整个文件. (2认同)
  • @Sohnee:缺少*之前定义*的引用实际上意味着*在*之前写入文件.但是我和你在一起,在某些情况下,它必须以这种方式完成.但我必须承认,我不确定这是否是这种情况(但OP应该测试过,所以不是一个糟糕的建议). (2认同)
  • 作为参考...我发现,如果您“有条件地”定义一个类,或者在另一个文件中定义它,则必须在使用它之前定义它(或者它可以是可自动加载的,但自动加载只是按需的定义)。如果它总是在该文件中定义,那么它可以在后面。 (2认同)