aggregate_info
(no version information, might be only in CVS)
aggregate_info --
オブジェクトに集約された各クラスのメソッドとプロパティを
連想配列で返す
説明
array
aggregate_info ( object object )
指定したオブジェクトに関する集約の情報を返します。返される値は、
メソッドとプロパティの配列を要素とする連想配列形式となります。
連想配列のキーは、集約されたクラス名となります。
以下に例を示します。
例 1. aggregate_info() の使用例
<?php
class Slicer { var $vegetable;
function Slicer($vegetable) { $this->vegetable = $vegetable; }
function slice_it($num_cuts) { echo "単純にスライスします\n"; for ($i=0; $i < $num_cuts; $i++) { // 何らかのスライス処理 } } }
class Dicer { var $vegetable; var $rotation_angle = 90; // 角度
function Dicer($vegetable) { $this->vegetable = $vegetable; }
function dice_it($num_cuts) { echo "最初のカットを行います\n"; for ($i=0; $i < $num_cuts; $i++) { // 何らかのカット処理 } $this->rotate($this->rotation_angle); echo "2 番目のカットを行います\n"; for ($i=0; $i < $num_cuts; $i++) { // さらに何らかのカット処理 } }
function rotate($deg) { echo "{$this->vegetable} を {$deg} 度回転します\n"; }
function _secret_super_dicing($num_cuts) { // 秘密の処理なので、見せられません ;-) } }
$obj = new Slicer('タマネギ'); aggregate($obj, 'Dicer'); print_r(aggregate_info($obj)); ?>
|
出力は以下のようになります。
Array
(
[dicer] => Array
(
[methods] => Array
(
[0] => dice_it
[1] => rotate
)
[properties] => Array
(
[0] => rotation_angle
)
)
) |
|
ごらんのとおり、
Dicer クラスのすべての
プロパティとメソッドが新しいオブジェクトに集約されました。
ただし、例外としてクラスのコンストラクタと
_secret_super_dicing
メソッドは
集約されていません。
aggregate()、
aggregate_methods()、
aggregate_methods_by_list()、
aggregate_methods_by_regexp()、
aggregate_properties()、
aggregate_properties_by_list()、
aggregate_properties_by_regexp()、
deaggregate() も参照ください。