Могу ли я использовать хип-хоп Facebook с такими фреймворками, как Zend Framework, cakephp, symfony
Вчера Facebook запустил HipHop, конвертер исходного кода из php в C++. Набор функций и конструкций php более ограничен, чем в стандартном php.
Совместимы ли текущие популярные php-фреймворки (ZF, CakePHP, symfony) с HipHop? Если нет, то какие части этих структур не могут быть использованы?
6 ответов
Если я не ошибаюсь, HipHop еще не был выпущен - даже страница вики, на которую ссылается объявление в Facebook вчера, еще не открылась.
Так что сейчас будет немного сложно ответить.
Я полагаю, все будет зависеть от:
- Функции, используемые в Frameworks - как уже сказано здесь и там, такие вещи, как
eval
не поддерживается HipHop - Расширения PHP, используемые в Frameworks: только несколько из них были перенесены Facebook на HipHop.
- В зависимости от фреймворков и ваших конкретных потребностей, может быть / возможно будут поддерживаться некоторые поднаборы фреймворков, которые вы используете, даже если не все доступные компоненты... Полагаю, время покажет, какие;-)
По крайней мере, ZF и Symfony используются для приложений уровня предприятия, и вполне вероятно, что они будут работать с HipHop. Если не сейчас, то рано или поздно. Однако вопрос не в том, смогут ли они работать с этими платформами, а в том, как выглядит ваша поддерживающая ИТ-архитектура.
HipHop предназначен для масштабирования больших многосерверных сайтов с высоким трафиком, таких как Facebook. В вашем обычном веб-приложении вы, скорее всего, не получите никаких преимуществ. Просто продолжайте использовать memcache и APC.
Смотрите эти статьи по теме:
Я не буду повторять то, что уже было сказано, я просто добавлю, что, как только HipHop будет выпущен, вы можете рассчитывать на сообщество open source, предоставившее патчи для вашей любимой платформы для повышения совместимости с HipHop.
Кроме того, одним из хороших способов проверить, совместима ли ваша любимая инфраструктура, является запуск набора тестов с использованием HPHPi (тогда вы знаете, где сосредоточить свои усилия по исправлению;).
Хотя я уверен, что большинству из нас интересно узнать, каким будет HipHop, я знаю, что он не заменит PHP - это очень нишевый продукт: если вы не используете большую серверную ферму, выигрыш в производительности по сравнению с затраты на обслуживание просто не оправдают это.
Возможно, это может быть интересной альтернативой для некоторых людей использовать закодированный PHP - но опять же это приводит к еще большим накладным расходам на обслуживание. Единственный сценарий с малым объемом, в котором скомпилированный PHP, по-видимому, имеет большой смысл, - это для встраиваемых устройств (где существует программное обеспечение для поддержки аппаратного обеспечения, а не наоборот) и для установок с очень высоким уровнем безопасности (где не очень хорошая идея иметь переводчика в наличии).
Пока рано говорить о том, какое программное обеспечение PHP будет с ним работать. Однако даже после того, как это будет установлено, я хотел бы видеть твердое обязательство со стороны любого поставщика, что они будут явно поддерживать HipHop в будущем, прежде чем я перешел.
C.
Поиск 'eval' дает много ложных срабатываний, так как вы получаете хиты для слова "оценивать" в комментариях или escapeValue, если поиск не чувствителен к регистру и т. Д.
Если вы ищете 'eval(' в ZF 1.11, вы найдете один раз в Zend/Serializer/Adapter/PhpCode.php в строке 59) в методе, который не сериализует хранимый код PHP. Этот метод не является частью MVC архитектура, компонент db и фактически не используются где-либо еще в фреймворке (Zend_Serializer_Adapter_PhpCode не создается нигде в базе кода).
Поэтому, если eval нарушает работу вашего приложения ZF-Hip Hop, не используйте Zend_Serializer_Adapter_PhpCode или eval в своем коде потребителя.
Простой ответ: я не думаю, что это будет.
Только что видел это на странице хип-хопа: https://github.com/facebook/hiphop-php/wiki/
"Вы продолжаете писать код на более простом PHP, тогда HipHop выполняет ваш исходный код семантически эквивалентным образом и жертвует некоторыми редко используемыми функциями, такими как eval(), в обмен на повышение производительности".
Сделал поиск 'eval' на ZF 1.9 и там более 100 случаев.