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);
 配列で一括処理できるので楽。
 

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」からコードを流用しています。

XBRL for PHP サンプルサイト
mzstyle.s147.xrea.com/xbrlphp/
XBRL for PHP ダウンロードサイト
sourceforge.jp/projects/xbr...
 

EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript