这些是我的课程
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)
答案 0 :(得分:1)
自动加载器负责查找包含类定义的文件,并包括这些文件,因此您不必显式调用include 'db.php';
等,但是它将无法执行您所要执行的操作重新尝试在这里做。
如果在create()
类中定义了DB
方法,则没有理由可以通过诸如User
之类的其他类的实例来访问它,除非您特别进行了操作为此,自动装带器将无济于事。
从DB::create()
实例访问User
方法的唯一方法是让User
扩展DB
。
class User extends DB { ...
这意味着所有User
对象也将是DB
的实例,并且不仅可以访问DB
的公共方法和受保护方法的所有全部 create()
。
看起来这可能就是您想要的。如果是这种情况,那么对Object Inheritance的阅读会很有帮助。