PHP通过自动加载器调用函数

时间:2018-08-09 21:58:59

标签: php oop

这些是我的课程

class DB{

    // returns the instance as it should - all system works well

    public function create(){
      // creates a row in the db....    
    }

}

class User{
    // does all it does....
}

我有一个自动加载器,可以加载类,并且系统运行良好

$user = new User();
$user->create(....)

我想在实例化User类时使用从数据库创建的方法,该怎么做?

我要防止的事情是不必在每个需要更新的类中创建一个函数“ update”

例如:

类用户-更新“用户表” 班级孩子-更新“孩子们桌子”

代替

// from DB class
update($table_name, $field)

1 个答案:

答案 0 :(得分:1)

自动加载器负责查找包含类定义的文件,并包括这些文件,因此您不必显式调用include 'db.php';等,但是它将无法执行您所要执行的操作重新尝试在这里做。

如果在create()类中定义了DB方法,则没有理由可以通过诸如User之类的其他类的实例来访问它,除非您特别进行了操作为此,自动装带器将无济于事。

DB::create()实例访问User方法的唯一方法是让User扩展DB

class User extends DB { ...

这意味着所有User对象也将是DB的实例,并且不仅可以访问DB的公共方法和受保护方法的所有全部 create()

看起来这可能就是您想要的。如果是这种情况,那么对Object Inheritance的阅读会很有帮助。