每当我尝试扩展课程时,我都会以
结尾致命错误:在第8行的C:\ xampp \ htdocs \ project \ home \ register \ register.php中找不到类“ home \ register \ Create”
我在同一目录下有2个文件类,第一个是抽象类Create:
<?php
namespace home\register;
use home\libs\Tools\Sanitize\Sanitize as sanitize;
abstract class Create
{
public $sanitize;
function __construct ()
{
$this->sanitize = new sanitize();
if (isset($_POST)){
foreach ($_POST as $key => $value){
if (!empty($_POST["$key"])){
$this->$key = $this->sanitize->clean($value);
}
}
}
}
abstract function db_query($pdo_db_name, $password, $query, $host = 'localhost');
}
第二个扩展了Create的类寄存器:
<?php
namespace home\register;
use PDO as pdo;
use home\libs\MainLogger\MainLogger as logger;
class register extends Create //Line 8 Error is thrown when extending the class
我可以发布整个代码,但我怀疑问题在那里。我一直在尝试适应结构设计模式,因为我认为它是处理许多类的最简洁的方法
答案 0 :(得分:0)
您需要确保已加载Create
,然后才能在register.php
中对其进行扩展。最简单的方法是使用require_once
,方法是添加以下内容:
require_once(__DIR__ . '/Create.php');
到register.php
的顶部。现在就足够了。
一旦开始加载许多类,您可能想看看使用autoloader。根据我的经验,最灵活的方法是将项目转换为使用composer
,然后使用autoload
配置项。
您的班级布局(不包括此问题中未显示的班级)将类似于:
src/register/Create.php
src/register/register.php
,为此,您的composer.json
看起来像这样:
{
"autoload": {
"psr-4": {"home\\": "src/"}
}
}
然后您可以通过运行以下命令来生成自动加载器:
composer dump-autoload
并通过添加以下内容在您项目的入口点中使用它:
require_once('vendor/autoload.php');
从这一点开始,您无需为每个文件添加单独的require_once
行,只要在向源中添加新类之后重新运行dump-autoload
。