Pull to refresh

Comments 49

UFO just landed and posted this here
Быть может, автор комментария намекал на YaF, также являющийся фреймворком, компилируемым в расширение PHP? :)
yet another…

...but better and faster than…

Не стоит делать поспешных выводов. Сначала посмотрите что это, и подумайте «yet another…» или нет.
Если подобные топики не выйдут в лидеры, то не видать нам будущего в этой тарелке. От ваших щелканий мышек по "+" вероятна степень увеличения комьюнити данного продукта в определенное колчества раз. Так что не стоит пренебрегать нашими возможностями вечных комментаторов.
От вас зависит жизнь ребенка! Еще вчера Маша радовалась жизни…
> От вас зависит жизнь ребенка! Еще вчера Маша радовалась жизни…

А СЕГОДНЯ ОНА ПРОГРАММИРУЕТ НА PHP, прошу прощения за капс-лок.
Я ни разу не программист, но хотел бы покрутить CMS, работающую на этом фреймворке.
Есть наработки и в этом направлении, пока версия очень сырая но сделано довольно много github.com/lantian/PhalconEye
Ох с багами траблов будет… пышные хоть можно сразу пофикссить, а для сишных нужно еще и сишника на проект нанимать. Совмещение двух языков когда это не кровь из носу как нужно идея всегда плохая.
А так вообще не увидил ничего нового или гениального, все это уже есть в куче фреймов.

Насчет моделей вообще странно, модели есть тока для реляционок, а для нереляционных нет.
У меня к примеру данные записываются всегда в кеш приложения и только под конец скопом загоняются в базу, при этом делается один большой массив изменений который шлется на клиент(я игры делаю). Дергать базу лишний раз это всегда выливается в создание горлышка.
UFO just landed and posted this here
UFO just landed and posted this here
А как вы узнаете что именно глючит? В том же зенде/кохане/др я могу залезть в исходник и сразу узнать что не так, что нужно переопределить чтоб он работал как мне нужно, здесь же это будет проблемой.
может наконец баги станут отправлять разработчикам а не костыли в фреймверк пихать.
Про то что использовать фреймворк для всех типичных задач не стоит согласен более чем полностью.
Что касается быстрой правки ошибок внутри фреймворка — решали их наследованием оригинального класса и своей php-реализацией бажного метода, плюс уведомление разработчиков. Проблемы, корректно озвученные и записанные в issue на github решались разработчиками в кратчайшие сроки, в среднем в течении сутки решаются большинство проблем и исправления доступны для сборки.

Для ODM есть модели, но работа и построение несколько иначе чем для реляционных БД: docs.phalconphp.com/en/0.9.0/reference/odm.html
Надеятся на чужой саппорт это плохая ситуация, потому как сегодня фиксят а завтра нет. Если нет контракта то риски все на тебе висят.
Имел кучу ситуаций когда проблемы упирались в сторонее ПО а сапорт разгребал крайне долго, если вообще разгребал. К примеру lxml либу так и не пофиксили от одного критичного бага.

Насчет наследования уже писал, код метода недоступен, а поэтому неясно как его переписать, а если их не переписать то нарушится стабильность фрейма.
с Вашей логикой
Надеятся на чужой саппорт это плохая ситуация
получается что вообще стоит в машинных кодах писать и не использовать ничего что уже написано.
по моей логике если вы пишите на пыхе то юзать си без надобности глупо. И да если можно юзать свой код лучше юзать свой. К сожалению это далеко не всегда возможно. Посему приходится юзать. Но, одно дело когда выбора нет, и другое когда он есть.
Пока что ни одного плюча за использование этого фрейма не увидил.
Позиция имеет право быть, каждый волен выбирать чем пользоваться.
Для себя мы увидели реализацию всех возможностей типичного php-фреймворка с максимальной скоростью и минимальным потреблением памяти. Проблемы найденные в чужом коде на Си и до их исправления решали реализацией аналогичных методов на php, недостающие в Phalcon компоненты использовали из Symfony.
код метода недоступен, а поэтому неясно как его переписать


Думаю, не всё так страшно. Немного посидеть с исходниками фреймворка, разбираясь со спецификой разработки расширений для PHP, и логику методов можно будет понимать, даже если с Си раньше ни разу не сталкивался. Лезть править код не нужно же, только понять как метод собирается делать то, что он должен делать и реализовать эти «что и как» на PHP, портировать по сути, исправляя баг.
Мне кажется любому пхпшнику полезно знать как оно «там» работает. (я про github.com/php/php-src)
Очень интересно было бы увидеть реальные бонусы его использования. Т.е. вот более-менее приложение, да пусть тот же бложек или форум, уж не говорю о магазине, реализованный на ZF, Symfony, Phalcon, Yii и Silex. Да хотя бы с Silex сравнить. Просто чем гуще будет бизнес-логика, тем меньше будет ощущаться профит, ИМХО. Ну или с тем же Hip-Hop сравнить.

Просто пока не очевидно, зачем нужен фреймворк в виде чёрного ящика, который на ходу быстро не поправишь, если опыта с си нет.
UFO just landed and posted this here
В том что этот клас не будет частью Фрейма. В CodeIgnitor есть к примеру переопределение системных классов, а сдесь я этого не увидил. А если этого нет, то наследовать прийдется все.

Так же если мне нужно поправить одну строку, а там кода на 5 страниц которого я не знаю то переопределить метод я не смогу, ибо он не будет выполнять заложенный в него функционал.
UFO just landed and posted this here
Извольте, какая конкретика Вам еще нужна?! Абсолютно реальный пример — когда баг в ядре фреймворка, самый простой вариант поправить код ядра пока не исправят разрабы… а в случае с falcon'е придётся переопределять метод, классы и т.д. а как это сделать без возможности переопределять классы ядра?? Вариант с правкой си кода ещё хуже, ибо дольше и требует остановки серверов, если они уже не легли из-за бага…

П.С. Есть опыт с решениями на PHP, где узкие места написаны на C, без опытного сишника — ни чего хорошего!
Форум фреймворка как раз на нм сделан forum.phalconphp.com, исходники открыты и можно без лишних телодвижений изучить github.com/phalcon/forum
Есть так же своя реализация сайта php.net на Phalcon php.phalconphp.com/, исходники доступны github.com/phalcon/php-site
И общие примеры реализации MVC парадигмы: github.com/phalcon/mvc
граппа — по моему имелось ввиду «группа»
Благодарствую, исправлено
Сегодня группа разработчиков Phalcon выпустилоа
Phalcon реально быстрый. Гонял его где-то пол-года назад. Однако внедрение в тот момент остановило отсутствие множества необходимых вещей. ИМХО разработчикам надо подумать об интеграции его например с Symfony 2 или ZF2. Чтобы можно было бы вместо какого-либо компонента фреймворка (роутинг, mvc или ещё что-нибудь) заюзать компоненты Phalcon'а. Тогда да, профит в виде производительности налицо + быстрая интеграция за счёт стандартизированных интерфейсов.
UFO just landed and posted this here
К сожалению свои тесты уже не найду(
Про стандартизацию интерфейсов вопрос сложен, ведь каждый фреймворк реализует своё видение решения проблем и предоставления удобства.

А вот с первым вопросом всё намного интереснее и лучше. Phalcon как раз представляет из себя набор очень слабо связанных между собой компонентов, и любой из них можно использовать в стороннем фреймворке в качестве замены. Так же и компоненты из других фреймворков можно использовать внутри Phalcon-приложения. Если используется MVC архитектура — то все компоненты регистрируются по типичным именам в \Pahlcon\Di, и их можно подменить на любой свой класс:
$di->set('session', function() {

    $session = new Phalcon\Session\Adapter\HandlerSocket(array(
            'cookie_path' => '/',
            'cookie_domain' => '',
            'lifetime' => 3600,
            'server' => array(
                'host' => 'localhost',
                'port' => 9999,
                'dbname' => 'session',
                'dbtable' => 'php_session'
            )
    ));

    $session->start();

    return $session;
});

Здесь внутренний написанный на Си компонент работы с сессиями подменяется реализацией использующей HandlerSocket и написанной полностью на PHP: github.com/phalcon/incubator/blob/master/Library/Phalcon/Session/Adapter/HandlerSocket.php
О, уже и DI есть… Класс!
Когда плотно работал с этим фреймворком много писал разработчикам в github.
Результатом стало появление фич «Горизонтальный и вертикальный шардинг» и «Динамическое обновление».
Разработчикам спасибо, что прислушались, а тем кто использует этот фреймовк — пишите свои отзывы и найденные баги!:)
да разработчики реагировали достаточно быстро я нашел несколько ошибок все были исправлены в тот же день
особенно порадовала работа с ODM
А как дела обстоят с формами? Насколько помню, в этом релизе должны были сделать более менее удобный инструмент на подобии Zend::Form? Проект классный, я бы дал им Оскар за прорыв года в PHP.
Компонент работы с формами добавили, но документация по нему еще скупа
Как и со всеми компонентами для работы с формами)))
Зачем ждать документацию когда есть Reflection?
А есть пхп-шные стабы с пхпдоками для всего этого? Я вот например не вижу никаких проблем в том что он на си (в конце концов си интересный и вам его в универе дают), но вот автокомплит/стат.анализ кода от иде это довольно важно для разработчика мне кажется (если конечно не покрывать все двухметровыми слоями тестов). И, кстати, не хотят ли разработчики сделать альтернативу эктиврекорду? Было бы очень классно увидеть такой doctrine2-киллер, на самом деле я бы принял в этом участие с радостью
Есть. Называется штука devtools. Позволяет не только автокомплит для разных IDE сделать, но и скафолдинг c CRUD и разными генераторами получить: phalcon-docs-ru.readthedocs.org/ru/latest/reference/tools.html Про стабы в самом конце страницы (Integrating Tools with PhpStorm IDE), пример для PHPStorm, но для остальных аналогично.
С Active records тоже всё хорошо, Phalcon через PDO умеет работать с разными базами в стандартном понимании моделей: phalcon-docs-ru.readthedocs.org/ru/latest/reference/models.html Предоставляет свой слой ORM и ODM: phalcon-docs-ru.readthedocs.org/ru/latest/reference/odm.html

Есть так же своё расширение SQL — синтаксис Phalcon Query Language (PHQL) позволяющий использовать с запросах неймспейсы и связи между таблицами, примерно так:
$phql = "SELECT Formula\Cars.*, Shop\Brands.* FROM Formula\Cars, Shop\Brands WHERE Shop\Brands.id = Formula\Cars.brands_id";
$rows = $manager->executeQuery($phql);
foreach ($rows as $row) {
    echo "Car: ", $row->cars->name, "\n";
    echo "Brand: ", $row->brands->name, "\n";
}
Да не, я не про то что там плохо сделан active record, просто сам по себе active record не хороший паттерн, вот и интересуюсь, может есть начинания на основе датамаппера.
Sign up to leave a comment.

Articles