CLOS как объектная модель для PHP

Я вернулся к разработке php из Moose, и мне очень не хватает CLOS, как объектной модели для php. Есть ли какой-то синтаксический сахар, который позволил бы мне писать меньше кода на php при работе с объектами?

Просто чтобы подчеркнуть это требование немного больше. Я не хочу писать одну вещь в нескольких местах. Я могу жить с частью кода, генерируемой автоматически, но в коде, который я должен увидеть для разработки, я не хочу видеть избыточную информацию, которая является просто беспорядком (подумайте: макрос LISP, если вам действительно нужно больше аналогий). Так что эта часть также может называться DSL, если это имеет больше смысла.

Я хотел бы иметь хотя бы роли (миксины) и какой-то самоанализ без переизобретения weel. Генераторы кода и автозагрузчики могут быть одним из способов решения хотя бы части этой проблемы.

ps Для JavaScript есть Joose, поэтому подобный API был бы очень полезен.

3 ответа

Решение

Также есть новый проект http://github.com/huberry/phuby который реализует роли в php!

В php еще нет миксинов, но есть RFC для черт, которые будут работать примерно так же. http://wiki.php.net/rfc/traits

Использование перегрузки для __call может позволить вам отправлять методы в другие классы, и это будет выглядеть как миксин.

Проект Symfony имеет механизм для миксинов, который позволяет аспектно-ориентированное программирование, как в CLOS. Лично мне не нравится этот вид взлома в пространстве пользователя (по крайней мере, с PHP). Я думаю, что вам было бы лучше использовать возможности, которые предоставляет язык, и, возможно, подождать, пока что-то вроде черт, чтобы (возможно) проникнуть в язык.

Другие вопросы по тегам