ホームページ > バックエンド開発 > PHPチュートリアル > クラス内の属性の設定に関しては、動的に値を計算して他の属性に代入します。

クラス内の属性の設定に関しては、動的に値を計算して他の属性に代入します。

WBOY
リリース: 2016-06-23 14:04:05
オリジナル
1103 人が閲覧しました

まずはコードを見てみましょう:

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 または保護されました。また、直接読み取る場合は、別の __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; this-> {$ property} = $ value; $ t = new test();
// $t->page_no = 2; 変数名は間違っているため、大文字と小文字を区別する必要があります
$t->mPage_no = 2; mPageOffset);

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート