2013-10-21 82 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