CLOS как объектная модель для PHP - PullRequest
4 голосов
/ 03 октября 2008

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 03 октября 2008

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

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

1 голос
/ 03 октября 2008

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

0 голосов
/ 18 января 2010

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

...