2

クラスのプロパティを非公開にし、get/set メソッドを使用してそれらにアクセス/変更する方が良いと読みました。

そのため、そのようにクラスを設定しましたが、プロパティを html テーブルに表示できるようにしたいので、別の htmlTable 表示クラスを使用してそれを行うつもりでした。

4つの可能性を考えました。これを行うための理想的な方法が既にわかっている場合は、遠慮なくスキップしてください。

ありがとうございました。

可能性:

  1. 次を使用してクラス フィールドを取得できます。

    $class_Vars = get_class_vars($object_class);
    $fields = $class_vars['fields'];
    
    // But as far as iterating through each object, this doesn't work:
    
    foreach($object_array as $current_object) {
        foreach($current_object as $value) {
            $html = '<td>' . $value . '</td>';
        }
    }
    

    値は非公開であり、アクセスできません。

  2. 非常に不器用に見え、おそらくデバッグの悪夢になる可能性のある解決策は次のとおりです。

    foreach($fields as $value) {
        $get_func = 'get' . ucwords($value); // e.g. $get_func = 'getId'
        $current_value = $current_object->$get_func();
    }
    

    うまくいくと思いますが、私には合いません。

  3. インターフェース。別の可能性は、実行したいすべてのクラスに htmlTable 関数を書き込むことです。しかし、それは多くのコードの再利用です。

  4. インターフェース。またはexport()、プロパティ名と値を含む配列を出力するだけの関数をすべてのクラスに書き込むこともできます。その後、私の htmlTable クラスはそれらの出力を処理できます。

4

1 に答える 1

1

それらを公開するか、get/setメソッドを作成します。

getAll()すべてのプライベート変数を含む連想配列を返すメソッドを作成することもできます。

于 2012-04-19T05:19:49.997 に答える