私はこのページを読んでいました - http://deaduseful.com/blog/posts/50-php-optimisation-tips-revisited
推奨事項の 1 つは、Zend Performance PDF から引用された Magic Methods の使用を避けることでした。
Googleで検索した後(そしてここで無関係な質問にたどり着きました)、誰かがその面で推奨事項を持っているかどうか疑問に思いましたか?
私は自分のコードで __get() をよく使用します。通常は、常に使用するとは限らない変数を保存するためです。
name、dess、category_id、time_added のテーブルがあるかもしれません
私のgetは次のようになります。
public function __get($name) {
スイッチ($name) {
ケース「名前」:
ケース「説明」:
ケース「カテゴリ」:
ケース「time_added」:
$result = do_mysql_query();
$this->name = $result['name'];
$this->desc = $result['desc'];
$this->category = $result['category'];
$this->time_added = $result['time_added'];
$this->{$name} を返します。
壊す;
デフォルト:
throw Exception("存在しないプロパティまたはプライベート プロパティにアクセスしようとしました - ".$name);
}
}
必要な場合にのみデータベースから何かを取得し、配列をいじるのではなく $article->time_added のようなものを参照できるため、これは物事を行うための優れた方法のようです。
これは悪い習慣と見なされ、サーバーに余分な負荷がかかりますか?
多くの場合、魔法のメソッドでクラスを拡張し、子クラスが get の何かと一致しない場合にこのようなことを行います。
public function __get($name) {
スイッチ($name) {
ケース「名前」:
ケース「説明」:
ケース「カテゴリ」:
ケース「time_added」:
$result = do_mysql_query();
$this->name = $result['name'];
$this->desc = $result['desc'];
$this->category = $result['category'];
$this->time_added = $result['time_added'];
$this->{$name} を返します。
壊す;
デフォルト:
親を返す::__get($name);
}
}
これは悪い習慣であり、パフォーマンスに悪いのでしょうか? 魔法のメソッドを拡張するときのレベルの最大数は 3 です。