私は、クラスのプロパティをプライベートにしてget/setメソッドを使用してアクセス/変更する方が良いと読んだことがあります。クラスのプライベートプロパティを表示する方法(PHP OOP)
私はクラスをそのように設定しましたが、htmlテーブルのプロパティを表示できるようにするために、別のhtmlTable表示クラスを使用していました。
私は4つの可能性を考えました。あなたがこれを行う理想的な方法を既に知っている場合は、気をつけてください。
ありがとうございます。
可能性:
私が使用してクラスのフィールドを取得することができます。
$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>'; } }
値はプライベートとアクセスできません。非常に不器用に見える、おそらくデバッグ悪夢だろう
可能な解決策がある:
foreach($fields as $value) { $get_func = 'get' . ucwords($value); // e.g. $get_func = 'getId' $current_value = $current_object->$get_func(); }
私はそれが仕事だと思うが、それは私と一緒に右に座っていません。
インターフェイス。 もう1つの可能性は、それをやりたいすべてのクラスにhtmlTable関数を書き込むことです。しかし、これはコードの再利用が多いです。
インターフェイス。 または、プロパティ名と値を持つ配列を出力するすべてのクラスに関数
export()
を書き込むことができます。次に、私のhtmlTableクラスはこれらの出力を処理できます。
PHPの反映が役立つかもしれません。 http://www.php.net/manual/en/reflection.extending.php –
実際には、変数を 'protected'に設定する方が良いと言います。そして、元のクラスを継承するクラスもそれにアクセスできます。 –
ありがとうtereshko、良い点。 –