3
回答
php类继承 变量重新赋值的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

model类中有一个
protected $table=null;该类构造函数中对改变量进行传值初始化.$this->table=!is_null($table)?$table:C('TABLE_NAME');

userModel类继承了Model类,且需要改变$table的值

class UserModel extends Model{
protected $table='user';

public function test(){
$result=$this->all();
p($result);
}
}
$table的值没有改变,为什么不生效哪,应该怎么写了.

还有一个问题

 类名形式访问一个方法时,如何加构造参数的参数.例如:Model::all();需要给model类传递一个参数''user'',直接写成Model('user')::all()不行.应该怎么写了
Model::all()这种访问形式是不是本身调用不了构造函数?



PHP
举报
manbudezhu
发帖于1年前 3回/189阅
共有3个答案 最后回答: 1年前

你最好显式地调用__construct()构造函数,
继承的时候显式调用父类的构造函数,
这样确保执行循序在你的控制下。

Model::all()这种形式的是调用静态方法,
之所以叫静态就是因为他不需要对象,
不需要对象也就不需要调用构造函数来构造对象。
这就是为什么这种函数是没有$this的。

引用来自“士止刀口”的评论

你最好显式地调用__construct()构造函数,
继承的时候显式调用父类的构造函数,
这样确保执行循序在你的控制下。

Model::all()这种形式的是调用静态方法,
之所以叫静态就是因为他不需要对象,
不需要对象也就不需要调用构造函数来构造对象。
这就是为什么这种函数是没有$this的。

这个我基本了解了,$table的值,继承时怎么改变他的初始值了?
--- 共有 1 条评论 ---
大止刀口1. 一般父类构造函数有传参用于赋值,相应地传参过去就可以了。例如在子类的构造函数里: parent::_construct($table);//把值传过去 2.如果没有传参的父类构造函数,由于是protected访问修饰,直接在子类构造函数里调用: $this->table = ;//直接赋值 1年前 回复
顶部