正确的类加载PHP

正确的类加载PHP,php,autoload,Php,Autoload,我正在学习PHP中的OOP,我面临着正确加载类的问题。我在HTML文件中有一个注册表单,其中的数据由PHP脚本处理。我有一个父类和几个子类,每个都在不同的文件中。我想将每个子类自动加载到父类中 这是我初始化子对象的父类 <?php spl_autoload_register(function ($class) { /*load the child class*/ include $class . '.php'; }); $addTxt = new AddTxt(); /*ini

我正在学习PHP中的OOP,我面临着正确加载类的问题。我在HTML文件中有一个注册表单,其中的数据由PHP脚本处理。我有一个父类和几个子类,每个都在不同的文件中。我想将每个子类自动加载到父类中

这是我初始化子对象的父类

<?php

spl_autoload_register(function ($class) { /*load the child class*/
    include $class . '.php';
});

$addTxt = new AddTxt(); /*init child class object*/

class Validator {
    public $name  = 'name ';
    public $s_name  = 's_name ';
    public $email = 'email ';
    public $ticket = 'ticket ';
    function __construct(){
        $this->name = $_POST['name'];
        $this->s_name = $_POST['s_name'];
        $this->email = $_POST['email'];
        $this->ticket = $_POST['ticket'];
    }
}

$validate = new Validator();

您不应在类的同一文件中初始化该类。将类移动到它们自己的文件中

Validator.php
您不应在类的同一文件中初始化该类。将类移动到它们自己的文件中

Validator.php
如果你有一个类文件,里面应该只有类而没有代码。因此,在您的案例中,基本上有以下文件:

Validator.php

class Validator { ... }
AddTxt.php

class AddTxt extends Validator { ... }
index.php

<?php

spl_autoload_register(function ($class) { /*load the child class*/
    include $class . '.php';
});

$addTxt = new AddTxt();
$addTxt->addLine();

如果你有一个类文件,里面应该只有类而没有代码。因此,在您的案例中,基本上有以下文件:

Validator.php

class Validator { ... }
AddTxt.php

class AddTxt extends Validator { ... }
index.php

<?php

spl_autoload_register(function ($class) { /*load the child class*/
    include $class . '.php';
});

$addTxt = new AddTxt();
$addTxt->addLine();

将避免在这个问题上重新发明轮子。不是我经常说的话。感觉现在有了一个标准。。。你不能像ant一样使用composer的autoloader吗?另一个明智的人:你将类存储在单独的文件中,没有其他东西属于这些文件,所以没有对象初始化。那些属于调用范围,在其中加载类。相关::文件应该声明符号(类、函数、常量等)或引起副作用(例如,生成输出、更改。ini设置等),但不应该两者兼而有之。考虑使用FPPSCV或序列化条目。在一个空间中,你的delimeter目前是脆弱的,因为没有过滤你的条目。这样可以避免在这个空间中重新发明轮子。不是我经常说的话。感觉现在有了一个标准。。。你不能像ant一样使用composer的autoloader吗?另一个明智的人:你将类存储在单独的文件中,没有其他东西属于这些文件,所以没有对象初始化。那些属于调用范围,在其中加载类。相关::文件应该声明符号(类、函数、常量等)或引起副作用(例如,生成输出、更改。ini设置等),但不应该两者兼而有之。考虑使用FPPSCV或序列化条目。在你的delimeter空间中爆炸的条目是脆弱的,因为没有对条目进行过滤。
<?php

spl_autoload_register(function ($class) { /*load the child class*/
    include $class . '.php';
});

$addTxt = new AddTxt();
$addTxt->addLine();