大家好我无法找到这个错误我是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";
}
?>
答案 0 :(得分:1)
问题是NewClass
文件中的oop1.php
不知道parentClass
是什么。当您调用include "oop1.php"
时,PHP将立即调用oop1.php
文件中的代码,因此PHP将尝试声明NewClass
。在此步骤中,您仍然没有声明parentClass
,这就是您看到此错误的原因。
我建议解决这个问题:
include
,而是使用require_once
。你可以阅读phpdocs的不同之处。 (最精彩的变体是了解autoloading并使用composer autoloader而不是手动要求每个文件。oop1_parentclass.php
文件中移动需要oop1.php
。答案 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;