PHPの小技:Class外からプロパティを変更する方法 & functionのエイリアスの作成方法
※以前別の場所で書いた文章を備忘的に書き記しておきます。
【投稿年月日】2011-01-25 【ジャンル】PHP/MySQL
最近になってようやくPHP5のClassが分かるようになってきたので、忘れないように小技をメモ。Class外からプロパティを変更する方法
Class内の変数はプロパティと呼ぶそうですが(最近知った)、それをClass外から一括して変更するfunction。基底Classにおいて変数のデフォルト値を定めつつ、派生Classなどでカスタマイズ可能にする。class XML {
// プロパティ指定
public $ATTR = "_attributes:";
public $CAT = "_category:";
public $LIST = "_file:list";
// プロパティ変更function
public function changePrint($names="") {
if(is_array($names)) {
foreach($names as $key=>$val) {
$this->$key = $val;
}
}
}
}
// プロパティ変更
$ary = array(
"ATTR "=>"_attr:",
"LIST"=>"_list:"
);
$ob_ = new XML;
$ob_->changePrint($ary);
配列で一括処理できるので楽。// プロパティ指定
public $ATTR = "_attributes:";
public $CAT = "_category:";
public $LIST = "_file:list";
// プロパティ変更function
public function changePrint($names="") {
if(is_array($names)) {
foreach($names as $key=>$val) {
$this->$key = $val;
}
}
}
}
// プロパティ変更
$ary = array(
"ATTR "=>"_attr:",
"LIST"=>"_list:"
);
$ob_ = new XML;
$ob_->changePrint($ary);
functionのエイリアスの作成方法
続いてfunctionのエイリアスの作成方法。 fwrite() と fputs() のような関係です。functionを作成後に、より分かりやすい名前にしたい場合など、互換性を保ちながら対応できます。class XML {
// プロパティ指定
public $ATTR = "_attributes:";
public $CAT = "_category:";
public $LIST = "_file:list";
// プロパティ変更function
public function changePrint($names="") {
if(is_array($names)) {
foreach($names as $key=>$val) {
$this->$key = $val;
}
}
}
// プロパティ変更function changePrint()のエイリアス
public function changeProperties(&$names="") {
$this->changePrint($names);
}
}
// プロパティ変更
$ary = array(
"ATTR "=>"_attr:",
"LIST"=>"_list:"
);
$ob_ = new XML;
$ob_->changeProperties($ary); // もちろん $ob_->changePrint($ary)でも可
いずれも、先日公開した「XBRL for PHP」からコードを流用しています。// プロパティ指定
public $ATTR = "_attributes:";
public $CAT = "_category:";
public $LIST = "_file:list";
// プロパティ変更function
public function changePrint($names="") {
if(is_array($names)) {
foreach($names as $key=>$val) {
$this->$key = $val;
}
}
}
// プロパティ変更function changePrint()のエイリアス
public function changeProperties(&$names="") {
$this->changePrint($names);
}
}
// プロパティ変更
$ary = array(
"ATTR "=>"_attr:",
"LIST"=>"_list:"
);
$ob_ = new XML;
$ob_->changeProperties($ary); // もちろん $ob_->changePrint($ary)でも可
XBRL for PHP サンプルサイト
mzstyle.s147.xrea.com/xbrlphp/
XBRL for PHP ダウンロードサイト
sourceforge.jp/projects/xbrl-php/
EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript