Действительно ли возможно использовать некоторое 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();
Вы можете использовать Prototype Creational Pattern для достижения чего-то вроде этого, но реальное наследование прототипов, подобное найденному в JavaScript, не представляется возможным afaik.
Если вы ищете что-то вроде миксов/трейтов, вы можете использовать Декораторы .
Есть RFC о том, должны ли быть трейты в PHP6.
Что вы можете сделать, так это иметь шаблон Prototype, который отслеживает жизненный цикл клонированных объектов через SplObjectStorage. Всякий раз, когда прототип изменяется, конструктор будет ходить по карте и соответствующим образом настраивать экземпляры. Однако, патч обезьяны должен быть выполнен через рункит . Звучит не слишком реалистично imho :)
.