先看代码:
class test(){public $mpageno = 1;public $mpagesize = 20;private $mpageoffset = 0;}
请教,如何实现当给$mpageno或者$mpagesize赋值的时候,就能自动给$mpageoffset赋值为($mpageno-1)*$mpagesize ?
回复讨论(解决方案) 需要借助魔术方法 __set(),同时还需要将 $mpagesize $mpageno 访问修饰符改为 private 或 protected。而且如果是直接读取的话,还需要另外的 __get() 方法,总之比较麻烦。
你不妨直接写个方法 setpageoffest($pageno=1, $pagesize=20)
需要借助魔术方法 __set(),同时还需要将 $mpagesize $mpageno 访问修饰符改为 private 或 protected。而且如果是直接读取的话,还需要另外的 __get() 方法,总之比较麻烦。
你不妨直接写个方法 setpageoffest($pageno=1, $pagesize=20)
class test { private $mpage_no = 1; //页码 private $mpage_size = 40; //每页条数 private $mpageoffset = 0; function __set($property, $value) { if ($property=='mpage_no' || $property=='mpage_size') { $this->mpageoffset = (($this->mpage_no)-1) * ($this->mpage_size); //print_r($this->mpageoffset); } } function __get($property) { return $this->$property; }}
$t = new test();$t->page_no = 2;print_r($t->mpageoffset);
这样得到的却是0!!何解呢?
class test {
private $mpage_no = 1; //页码
private $mpage_size = 40; //每页条数
private $mpageoffset = 0;
function __set($property, $value) {
$this->{$property} = $value; // __set 并不会自动赋值
if ($property=='mpage_no' || $property=='mpage_size') {
$this->mpageoffset = (($this->mpage_no)-1) * ($this->mpage_size); }
}
function __get($property) {
return $this->$property;
}
}
$t = new test();
// $t->page_no = 2; 变量名错误,且需要注意区分大小写
$t->mpage_no = 2;
print_r($t->mpageoffset);