重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这是php静态数据过早绑定的问题(即子类的all方法是从父类中继承过来的,__CLASS__常量过早的绑定成了父类名),解决这个问题:方法一:class all{ function all() { return __CLASS__; }} class my extends all{ function all() { return __CLASS__; }}//子类定义同名的方法(这其实就是覆盖了父类的方法,让__CLASS__绑定为自己的类名)echo my::all();
专注于为中小企业提供网站设计、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业永州免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
方法二:class all{ function all() { return get_class($this); }} class my extends all{}$my = new my();//非静态调用是不存在过早绑定的情况的。echo $my-all();
这个可以看看php5.3.0版本之后的静态迟绑定相关信息(static关键字)
我建议你在父类中定义一个空函数:
class Db {
// ...
public function connect($config='',$linkNum=0,$force=false) {}
}
或者干脆定义为抽象类(抽象类是不能实例化的):
abstract class Db {
// ...
// 注意这里不能有函数体
abstract public function connect($config='',$linkNum=0,$force=false);
}
父类不能调用子类的函数。这里相当于”父类“调用自己的函数,但这个函数被子类继承(或者实现)。
function getAllIds($id)
{
$res = mysql_query("select * from `表名` where father_id='$id'");
while($row = mysql_fetch_array($res,MYSQL_ASSOC))
{
print_r($row);
getAllIds($row['class_id']);
}
}