LINUX.ORG.RU

PHP is new Java


0

7

Как говорил Олег, жить по-человечески — это работать два часа в неделю, иметь квартиру с видом на залив, и знать теорию категорий. Вот и мне понадобилась парочка важных вещей.

Товарищи, перешел недавно с Жавы на Похапэ, похоже, здесь можно сделать всё как в Жаве, и графику, и управление.

Великолепные аналитики, прошу вашего мнения на следующие вопросы:

1) Не гуглится ни одна реализация generics/templates. Даже type-erasure в стиле жавы, которые можно сделать кодогенерацией. В PHP есть какое-то готовое решение? Если нет, хочу какую-нибудь реализацию или костыли на замену!

2) Нагуглилось несколько реализаций аннотаций. Например (пример использования). Какую использовать? Причем, на вики есть вот такое RFC с патчем на код пыха, кто знает когда его реально примут в апстрим?

3) Хотелось бы услышать ваше безумно авторитетное мнение насчет библиотек Dependency Injection и автолоадеров пакетов (use com.sun.awt.*). Особенно таких, которые будут жить отдельно от какого-то монструозного веб-фреймворка. Вон из Symfony 2 вроде можно наскрести его DI, он лежит отдельным модулем на гитхабе. От их же Композера мы уже открутили автолоадер. А что там с FLOW3? Есть _хорошие_ движки, которые специально заточены быть отдельными? И юзающие всякие полезняшки типа APC, FPM, может какие-нибудь кэши, короче чтобы это работало быстро, и можно было юзать в ситуациях, когда инжектятся тыщачи вещей и инклудятся мильярды пакетов.

4) Что насчет maven-like «систем для управления проектами»? Ну или хотя бы сборщиков с зависимостями. Вот есть Composer, но он какой-то убогий после мавена. Есть еще что-нибудь?

UPD:

5) Посоветуйте хороший объектный кэш в shared RAM. Не сериализацию в мемкашу и редис, не размазывание по жесткому, а именно гарантированно в раму. General purpose, с быстрым доступом из любого пыхоскрипта в общем случае. Хорошо было бы умение вытягивать в раму ветви нескалярных объектов.

sudo cast --verbose KRoN73

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 2)

перешел недавно с Жавы на Похапэ

но зачем??

чем конкретно жаба не устраивает, и если не устраивает, то почему именно похапэ из всех 9000 ЯП??..

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

на нем пишет большинство окружающих людей и организаций, они по заказу написали тонну кода, который теперь нужно интегрировать в наши проекты.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

а нем пишет большинство окружающих людей и организаций, они по заказу написали тонну кода, который теперь нужно интегрировать в наши проекты.

Я бы сразу уволился, если мне бы пришлось этим заниматься. Есть же всему пределы.

gensym ★★
()
Ответ на: комментарий от gensym

а мне пых нравится. По крайней мере, после недели общения с ним, не нашел в нем ничего ужасного. В некоторых случаях код можно вообще копипастать между жабкой и пыхом, исправляя только детали синтаксиса. Знакомство с эрлангом и недожс были куда более болезненными.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

бери какой-нибудь quercus и интегрируйся.

правда не очень ясно, что есть большее извращение - запускать php под jvm или писать на php.

maloi ★★★★★
()
Ответ на: комментарий от maloi

я как-нибудь на чистом php сынтегрируюсь. Но нужна квартира с видом на залив, аннотации, DI, кэш и система сборки :)

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Вот и я всегда говорил, что пых и кресты зря обвиняют в том, что это быдлокодерские языки. То, что это популярные языки, означают что их больше юзают быдлокодеры, но это не значит, что на них нельзя писать качественный код. Быдлокодить можно на любом языке, даже на Брейнфаке, было бы желание ;-)

Pinkbyte ★★★★★
()

5) Посоветуйте хороший объектный кэш в shared RAM. Не сериализацию в мемкашу и редис, не размазывание по жесткому, а именно гарантированно в раму. General purpose, с быстрым доступом из любого пыхоскрипта в общем случае. Хорошо было бы умение вытягивать в раму ветви нескалярных объектов.

Ты скорее всего имеешь в виду http://php.net/manual/en/book.shmop.php

anthill
()
Ответ на: комментарий от anthill

классно, очень полезная вещь!

но я имею другое в виду. Хочу сохранить в памяти объект, чтобы он остался жить между перезагрузками страниц. Но при этом - без сериализации. Не данные объекта - а сам объект.

Например, какой-то инстанс виртуалки PHP, на котором будут жить «вечные» объекты, и способ прозрачно использовать эти объекты внутри другого инстанса похапэ. Или какая-нибудь магия с FastCGI и модулями апача, чтобы интерпретатор не перезагружался между вызовами. Что-то такое. Я не шарю, к сожалению :(

stevejobs ★★★★☆
() автор топика

1) Не гуглится ни одна реализация generics/templates.

Зачем, утиная типизация же? Что хочешь, то и пихай.

2) Нагуглилось несколько реализаций аннотаций. Например (пример использования). Какую использовать?

Никакую, это не идиоматично. Use convention over configuration.

3)Хотелось бы услышать ваше безумно авторитетное мнение насчет библиотек Dependency Injection

В общем тоже не идеоматично. Мало кто это юзает.

4) Что насчет maven-like «систем для управления проектами»?

Юзай, что все юзают, т.е. composer.

5) Посоветуйте хороший объектный кэш в shared RAM.

Используй memcached, и не делай мозг.

Короче, PHP, это не Java, тут свой мирок.

dizza ★★★★★
()

3) Хотелось бы услышать ваше безумно авторитетное мнение

слишком монструозно там все... Интересно почитать, посмотреть реализации (симфони2 любит хвастаться своим di) Но при детальном рассмотрении приходишь к выводу, что можно сделать проще. Иногда складывается впечатление, что di это из серии «чего люди не изобретают, только не прочитать книжку и правильно понять GOF» Это не значит, что паттерны нужно применять везде подряд кончено. Но DI это по сути комбинация нескольких паттернов: мост, стратегия, фабрика и другие (если актуально, надо мне вспомнить - разбирался как-то)

Загрузчики: соглашения по пространствам имен psr 1-2 - тоже слишком монструозно. Автолоадеры очень актуальны (вообще все должно идти через автозагрузчики классов (spl_autoload)), но проще сделать самим чтоб не париться со вложенностью каталогов и модулей.

Использовать 5.4 (много новых актуальных фич и профитов) - и смотреть реализации, ориентированные на эту версию.

flow3 интересная разработка - многие идеи в коде довольно в ногу со временем были недавно. Сейчас не слежу.

swwwfactory ★★
()
Ответ на: комментарий от dizza

чтобы не жрать что дают, мы и пишем свой фреймворк. Если чего нету - сделаем сами. Но перед тем, как велосипедить, нужно проверить готовые решения.

Симфония не катит, т.к. у нас приложения хоть и с веб-мордой, но логика там не by-request, а десктопная. Даже для Жавы мы в аналогичных случаях юзаем Wicket, чтобы при создании вебморды создавалась иллюзия создания десктопного приложения.

Аннотации и прочее нужны для метапрограммирования. Пока сошлись на Doctrine Annotations.

Вместо мемкаши посоветовали юзать APC+igbinary(apc.serializer=igbinary) - перфоманс чуточку поднимет, данные можно гонять shmop. Говорят, объектного кэша пока технически нету.

stevejobs ★★★★☆
() автор топика

Слишком толсто :(

vzzo ★★★
()
Ответ на: комментарий от stevejobs

Вы суровые. Только php начали использовать и уже свой фреймворк. Напоминает плюсовиков, которых заставили писать на джаве и они по привычке свою строку с коллекциями начинают делать.

Legioner ★★★★★
()
Ответ на: комментарий от dizza

Ты лучше расскажи, как ты английский осилил.

anonymous
()
Ответ на: комментарий от stevejobs

Доктрина с ее аннотациями оче медлительна, лучше использовать только стандартные структуры языка. Я как увидел чего она и сколько времени творит (в выхлопе xdebug cachegrind например), весьма прифигел.

dismal_faun ★★
()
Ответ на: комментарий от stevejobs

чтобы не жрать что дают, мы и пишем свой фреймворк. Если чего нету - сделаем сами. Но перед тем, как велосипедить, нужно проверить готовые решения

А ну, это, если охота крутых-решений-как-в-java-но-в-php, есть такая штука, как Limb. Поделка еще та, но good gesign.

dizza ★★★★★
()
Последнее исправление: dizza (всего исправлений: 1)

Система сборки Phing (Ant like), насчёт плюшек как в мавене думаю будет сложно найти что-то такое

jreznot
()
Ответ на: комментарий от dismal_faun

У нас сейчас Yii. Не рекомендую. Лучше, чем ничего, конечно, но та же Symfony еще лучше. А можно и лучше, чем в Symfony.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

А чем Yii не понравился, вроде адекватный фреймворк, еще сейчас ковыряю symfony2

sol13 ★★★★★
()
Ответ на: комментарий от buddhist

Если ты это серьезно, то, пожалуйста, перестань программировать.

Ты либо по жизни глуп, либо просто никогда не делал ничего серьёзнее домашних страничек.

anonymous
()
Ответ на: комментарий от stevejobs

Я вот не давно смотрел какие фреймворки есть прикольные в PHP, из живого понравиося только симфони второй. А что там еще есть что-то более крутое?

dizza ★★★★★
()

Они же одногодки, какой там «new».

aedeph_ ★★
()
Ответ на: комментарий от dizza

А что там еще есть что-то более крутое?

запилить собственными руками что-то крутое же :)))

stevejobs ★★★★☆
() автор топика

В чужой монастырь со своим уставом не лезут.

urxvt ★★★★★
()

хороший объектный кэш в shared RAM

напиши с использованием boost::interprocess. ЧКТ.

ckotinko ☆☆☆
()
Ответ на: комментарий от stevejobs

на котором будут жить «вечные» объекты, и способ прозрачно использовать эти объекты внутри другого инстанса похапэ

никак

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

http://phpdaemon.net/

anthill
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.