【发布时间】:2012-07-31 12:30:54
【问题描述】:
我的 PHP 项目中的每个 MySQL 表都有一个单独的类。该类将是这样的:
class students {
public static function find_all() {
return self::sql_finder("SELECT * FROM ".get_class());
}
}
我对项目中几乎所有的表都使用相同的类,除了我将类名更改为表名。现在你可以看到我在类中使用的函数中使用了“get_class()”,所以SQL从类名中获取表名。
由于我在所有类中使用的类中的函数太多,我计划用子类扩展该类,如下所示:
class class_with_all_the_common_functions {
public static function find_all() {
return self::sql_finder("SELECT * FROM ".get_class());
}
}
class student extends class_with_all_the_common_functions {
// some table specific functions
}
现在当我使用student::find_all() 时,它会显示错误:
Database query failed: Table 'dr.class_with_all_the_common_functions
doesn't exist
我认为这很清楚,我希望find_all() 在班级学生中执行时执行。这是否可以通过后期静态绑定实现?
【问题讨论】:
-
你试过后期静态绑定了吗? static::sql_finder() 而不是 self::sql_finder() ?
-
嗨,纳文。我可以请您尝试将“I”大写并在可能的情况下格式化代码块/内联吗?使其尽可能具有可读性可以帮助每个人,包括那些第一语言不是英语的人。谢谢!
-
嗨halfer,我是新手,事实上这是我的第一个问题,以后会考虑你的话,谢谢
-
Yazmat ,我试过还是没用,反正我的代码中好像缺少 get_call_class() ,下面有好人说清楚了