Наследование Prototypal в PHP (как в JavaScript)

Действительно ли возможно использовать некоторое prototypal наследование в PHP как он, реализован в JavaScript?

Этот вопрос прибыл по моему мнению только из любопытства, не, что я должен реализовать такую вещь и идти вразрез с классическим наследованием. Просто похоже на интересную область для исследования.

Там предварительно создайте функции, должны объединить классическую модель наследования в PHP со своего рода наследованием Prototypal с комбинацией анонимных функций?

Скажем, у меня есть простой класс для 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();
7
задан Juraj Blahunka 9 February 2010 в 00:39
поделиться

1 ответ

Вы можете использовать Prototype Creational Pattern для достижения чего-то вроде этого, но реальное наследование прототипов, подобное найденному в JavaScript, не представляется возможным afaik.

Если вы ищете что-то вроде миксов/трейтов, вы можете использовать Декораторы .

Есть RFC о том, должны ли быть трейты в PHP6.

Что вы можете сделать, так это иметь шаблон Prototype, который отслеживает жизненный цикл клонированных объектов через SplObjectStorage. Всякий раз, когда прототип изменяется, конструктор будет ходить по карте и соответствующим образом настраивать экземпляры. Однако, патч обезьяны должен быть выполнен через рункит . Звучит не слишком реалистично imho :)

.
3
ответ дан 7 December 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: