找不到父类的类

时间:2017-10-29 09:04:50

标签: php class

大家好我无法找到这个错误我是oop的新手。我正在尝试访问parentClass,但它继续说NewClass没有找到我声明它

// here is the code

//oop1_index.php
       <?php
       include "oop1.php";
        include "oop1_parentclass.php";

          $object = new NewClass;
?>
     <!DOCTYPE html>
     <html>
     <head>
       <title>OOP</title>
     </head>
<body>

<?php
    echo $object->name;


?>  

</body>
</html>

// oop1.php这是我的NewClass的文档

<?php

class NewClass extends  parentClass {

}



?>

// oop1_parentclass.php这是我的parentClass所在的位置

<?php

class parentClass{
    public $info = "This is info";

}

?>

3 个答案:

答案 0 :(得分:1)

问题是NewClass文件中的oop1.php不知道parentClass是什么。当您调用include "oop1.php"时,PHP将立即调用oop1.php文件中的代码,因此PHP将尝试声明NewClass。在此步骤中,您仍然没有声明parentClass,这就是您看到此错误的原因。

我建议解决这个问题:

  1. 请勿使用include,而是使用require_once。你可以阅读phpdocs的不同之处。 (最精彩的变体是了解autoloading并使用composer autoloader而不是手动要求每个文件。
  2. oop1_parentclass.php文件中移动需要oop1.php
  3. 您可以找到工作示例here

答案 1 :(得分:0)

如果类在不同的文件中,则必须在&#34; main&#34;中包含一个文件。一。还有composer,一个数据包管理器,可以通过使用文件的命名空间(https://getcomposer.org/doc/01-basic-usage.md来帮助您完成此操作,请参阅自动加载)。
不使用作曲家,试试:

<?php

require_once 'oop1_parentclass.php';
class NewClass extends  parentClass {

}

?>

然后第二个文件:     

class parentClass{
    public $info = "This is info";

}

?>

答案 2 :(得分:-1)

<?php

include "oop1.php";
/*
//oop1.php this is the document for my NewClass
class NewClass extends  parentClass {}
*/

include "oop1_parentclass.php";
/*
//oop1_parentclass.php this is where my parentClass is located
class parentClass{ ...
*/


 $object = new NewClass;
?>

所以你在一个不存在的类上调用扩展。 切换您的包含功能,因此您首先要包含parentClass声明,然后再包含NewClass的定义。

更新的代码应为:

include "oop1_parentclass.php";
include "oop1.php";
$object = new NewClass;