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). Я думаю, что вам было бы лучше использовать возможности, которые предоставляет язык, и, возможно, подождать, пока что-то вроде черт, чтобы (возможно) проникнуть в язык.