クラスを拡張して基本 orm 関数を提供する抽象クラスがあります。それが提供するすべての関数はクラスに対して保護されているため、どのフィールドを外部オブジェクトに公開するかを決定できます。しかし最近、私はそのような複雑さを必要とせず、orm 編集機能を一般に公開し、特別な機能を持たないことで恩恵を受けるいくつかの小さなデータ クラスを扱い始めました。
関数の命名規則は十分かつコンパクトであるため、既存の関数をパブリックに変更する方法はありますか (同じクラスを必要とせずに、または暫定的に拡張する必要はありません)、またはtraits
追加するために php の新しい機能を使用する必要がありますか?内部保護された関数の抽象化レイヤーとして機能する関数の公開バージョンを含む既存のクラス?
編集:
特性メソッドについては、次のように役立つと考えていました。
abstract class ORMClass {
public function __construct($pk) {}
protected function __get($k) {}
protected function __set($k,$v) {}
protected function save() {}
}
trait publicORM {
public function __get($k) { return parent::__get($k); }
public function __set($k,$v) { return parent::__set($k,$v); }
public function save() { return parent::save(); }
}
class myOrm extends ORMClass {
use publicORM;
protected static $table = 'myTable';
}
だから私は次myOrm
のように使うことができます:
$myOrm = new myOrm(1);
$myOrm->foo = 'alice'
echo $myOrm->bar;
$myOrm->save();
以下を必要とせずに:
public function __get($k) { return parent::__get($k); }
public function __set($k,$v) { return parent::__set($k,$v); }
public function save() { return parent::save(); }
クラス myOrm にリストされる