7

JavaScriptで実装されているように、PHPである種のプロトタイプの継承を採用することは可能ですか?

この質問は、好奇心から頭に浮かびました。そのようなことを実行して、古典的な継承に反対しなければならないということではありません。探索するのに面白いエリアのように感じます。

PHPの古典的な継承モデルと、無名関数の組み合わせを使用したある種のプロトタイプの継承を組み合わせるためのビルド前の関数はありますか?

UserModelの単純なクラスがあるとしましょう

class UserModel implements PrototypalInheritance
{
    // setters, getters, logic..
    static public function Prototype () {}
}

$user = new UserModel();

UserModel::prototype()->getNameSlug = function () {
    return slugify($this->getUserName());
}

echo $user->getNameSlug();
4

1 に答える 1

3

Prototype Creational Patternを使用して、これにいくらか似たものを実現できますが、JavaScriptに見られるような実際のプロトタイプの継承は不可能です。

ミックスイン/トレイトのようなものを探している場合は、デコレータを使用できます。

ただし、PHP6に特性があるかどうかについてのRFCがあります。

あなたができることは、SplObjectStorageを介して複製されたオブジェクトのライフサイクルを追跡するプロトタイプパターンを持つことです。プロトタイプが変更されるたびに、ビルダーはマップをウォークスルーし、それに応じてインスタンスを調整します。ただし、モンキーパッチはrunkitを介して実行する必要があります。あまり実現可能ではないimho:)

于 2010-02-03T13:21:40.780 に答える