3

重複の可能性:
同じファイルで後で定義された派生クラスは「存在しません」?

以下の if ステートメントで初期化しようとすると、 Fatal Error: Class 'PublicacionController' not found が発生する理由を知っている人はいますか?

--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 Linux とリポジトリのデフォルトの https および PHP バージョンを使用して、標準の Amazon Ec2 インスタンスを実行しています (同じ 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

これは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 に答える
1

それが AJAX 呼び出しであるという事実は関係ありませんが、呼び出しコードがクラス宣言の上にあるという事実は関係があります。

コードを交換するか、別のファイルに移動することをお勧めします。

于 2012-10-01T15:05:06.013 に答える