そのまんま!

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() も参照ください。