找不到php结构设计模式扩展类

时间:2018-12-24 21:25:34

标签: php oop input pdo

每当我尝试扩展课程时,我都会以

结尾
  

致命错误:在第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

我可以发布整个代码,但我怀疑问题在那里。我一直在尝试适应结构设计模式,因为我认为它是处理许多类的最简洁的方法

1 个答案:

答案 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