这将会很奇怪。我有一个用于MySQL的数据库类,以及独立的类。例如:
class users extends MySQL这个类是一个面向用户的通用类,可以多次使用。但偶尔会出现一个"MySQL_DEBUGGED“类,如果是这样的话,我想从它扩展:
class users extends MySQL_DEBUGGED如果存在,我想继承MySQL_DEBUGGED,否则继承MySQL类。如果我把它放到变量中,它会抛出一个错误。该怎么做呢?
发布于 2011-08-14 00:05:53
我不认为你可以继承一个名字没有写在PHP脚本中的类。
一种可能的解决方案是:
MySQL )users类始终扩展MySQL类(表示这两个类中的一个)根据情况,包括:F19”D14
这样,您的类总是扩展一个MySQL类--但您将包含正确的类。
基本上,在你的主文件中,你会有:
if (DEBUG) {
require __DIR__ . '/MySQL-debug.php';
}
else {
require __DIR__ . '/MySQL-production.php';
}
class users extends MySQL {
// ...
}MySQL-debug.php和MySQL-production.php都将包含一个名为MySQL的类--当然,这两个文件中包含的内容并不相同。
发布于 2011-08-14 00:04:56
您所需要做的就是使用class_exists()函数。
if (class_exists('MySQL_DEBUGGED')) {
class users extends MySQL_DEBUGGED {
....
}
} else {
class users extends MySQL {
....
}
}不过,我不建议你这么做。有条件地声明类看起来像是一场噩梦。
发布于 2011-08-14 00:22:04
最简单的解决方案是有一个空的“桥”类,并总是从那个类继承。
然后,唯一需要声明两次的类就是空类。
if (class_exists('MySQL_DEBUGGED')) {
class MySQLBridge extends MySQL { }
} else {
class MySQLBridge extends MySQL_DEBUGGED { }
}
class User extends MySQLBridge {
// ... your code ...
}最后在你的页面上:
require_once('User.php');
$user = new User();其他建议的解决方案要求您拥有继承类的两个副本,我不推荐这样做。
https://stackoverflow.com/questions/7051606
复制相似问题