(PHP 4 >= 4.3.0)
aggregate_info — 指定したオブジェクトの集約情報を取得する
object で指定したオブジェクトについての 集約情報を取得します。
指定したオブジェクトに関する集約の情報を返します。返される値は、 メソッドとプロパティの配列を要素とする連想配列形式となります。 連想配列のキーは、集約されたクラス名となります。
例1 aggregate_info() の使用例
<?php
class Slicer {
var $vegetable;
function Slicer($vegetable)
{
$this->vegetable = $vegetable;
}
function slice_it($num_cuts)
{
echo "Doing some simple slicing\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 "別の向きのカットを行います\n";
for ($i=0; $i < $num_cuts; $i++) {
// さらに何らかのカット処理
}
}
function rotate($deg)
{
echo "{$this->vegetable} を {$deg} 度回転します\n";
}
function _secret_super_dicing($num_cuts)
{
// 企業秘密なので、ナイショです (^o^)
}
}
$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 メソッドは集約されていません。