2013-10-21 47 views
2

我有一個class MyClass工作正常。當我創建一個實例使用 $obj = new MyClass()作品像魅力。問題是,如果我擴展class MyClass extends MyExtends,它會給我一個錯誤:class MyClass not found擴展類時未找到類

因爲魔鬼在細節,這裏有一些:在同一個文件中創建

1)MyClass的實例(稱爲MyClass.php)。

$obj = new MyClass(); 
class MyClass extends MyExtends{ 
} 

2)的obj創建使用AJAX

if($_POST['myAjaxFlag']){ 
    $obj = new MyClass(); 
} 

3)AJAX調用返回的成功調用,但如果我打印數據返回,我得到這個類未找到錯誤的PHP消息。

+1

你在哪裏定義'MyExtends'?你能發佈你得到的確切的錯誤信息嗎? – iamnotmaynard

+0

是1)還是2)發生在同一個文件中? – TheWolf

+0

客戶端AJAX使用http狀態碼來確定成功/失敗。只要事情的PHP方面返回200,JavaScript即使成功,但即使實際的「成功」是徹底的失敗。 –

回答

3

這是因爲您在初始化

obj = new MyClass(); 
class MyClass extends MyExtends{ 

} 

修正後聲明類 「MyClass的」:

class MyClass extends MyExtends{ 
} 
obj = new MyClass(); 

應工作即可;)

+0

謝謝!我真的不知道這是爲什麼起作用,但它確實如此。如果我不擴展MyClass,即使它在類聲明之前,它也可以工作。 編輯:我看到你的反應之前,你的更正,我假設你想改變順序(沒有第一個$ obj = new MyClass();) – kunde

+0

是的,你是對的,我已更正我的格式, 因爲它只有一個Codeblock,所以我分成兩部分。 但很好,它的工作 – demonking

0

您需要在之前定義的類可以使用它。所以「新」應該在類MyClass定義之後。

還需要定義MyExtends,然後才能將其擴展......事先在同一個文件中或通過「require」語句。

+0

我需要在開始時聲明MyExtends的文件,但仍然無效。 – kunde

1

訂購事項:

<?php 
    class Base 
    { 
     protected function sayHello() 
     { 
      echo("Base hello\n"); 
     } 
    } 

    class Child extends Base 
    { 
     public function sayHello() 
     { 
      parent::sayHello(); 

      echo("Child hello\n"); 
     } 
    } 

    $obj = new Child(); 
    $obj->sayHello();  

?> 

Base hello

Child hello

+0

MyExtends類在MyClass聲明之前聲明(在頂部使用'require')。 – kunde