Кто спорит? Отличная штуковина! Практически (если верить моим данным - на истину в последней инстанции не претендую) единственная подобная штуковина с открытым кодом, которая действительно хорошо работает.
Концепции MVC существуют разные, концепции собственно представления - тоже. Есть "активные" и "пассивные" шаблоны. Native-PHP - ярко выраженные "активные" шаблоны, ничего страшного, если какой-то минимум логики будет в них присутствовать. В Blitz схема работы несколько другая: помимо собственно шаблона, есть еще контроллер шаблона - программа на PHP. Я говорил именно про код контроллера шаблона.
Лично мне нравится Blitz. Хочу, однако, заметить: подобные шаблонизаторы имеют право на жизнь только в том случае, если не реализованы на PHP (иначе - тормоза неизбежны). В остальном - синтаксис Blitz гораздо удобнее, нежели смарти или тот же PHP. Бывают ситуации, когда в PHP-шаблонизаторе неудобно сделать вещь, которую в Blitz можно сделать легко и элегантно. Например: у вас есть таблица данных, нужно посчитать общую сумму и вывести перед собственно таблицей. В случае PHP придется вынуть все данные из выборки (цикл), обернуть во что-нибудь вроде массива, посчитав при этом сумму, вывести сумму, вывести таблицу (еще цикл), пройдясь по свежесозданному массиву. Получилось два цикла (ок, я не рассматриваю сейчас пляски с ob_* бубнами). А Blitz? проходимся по результатам выборки, выводим нашу таблицу, а затем, уже имея итоговую сумму, возвращаемся к блоку, который в шаблоне стоит перед таблицей и вставляем туда эту сумму.
При использовании JOIN'ов на таблицу с ENGINE=Sphinx могут возникнуть определенные... мм, не то чтобы проблемы - скорее особенности, которые в общем объясняются следующей фразой из документации по сфинкс:
One very important note that it is much more efficient to allow Sphinx to perform sorting, filtering and slicing the result set than to raise max matches count and use WHERE, ORDER BY and LIMIT clauses on MySQL side. This is for two reasons. First, Sphinx does a number of optimizations and performs better than MySQL on these tasks. Second, less data would need to be packed by searchd, transferred and unpacked by SphinxSE
ну, я уже приводил ссылку на http://adobe.com... Кроме того, если вы создаете flash-приложения среде Adobe Flash - там есть кнопка F1. Ммм, думаю, что и в Adobe Flex Builder есть такая кнопка ;), как и возможность создать видео-плеер - хотя наверное утверждать не могу.
В принципе, опытный флэшер, снабженный докой на объект NetStream, и в частности, на его метод onMetaData (см. на http://adobe.com), может написать подобный плеер весьма быстро. Впрочем, мне в этом плане повезло - я работаю с одним из признанных гуру в этой области.
Кстати: если есть еще связанные с этой темой аспекты, которые хотелось бы обсудить - милости прошу. Если только смогу - отвечу.
Человек, знающий, что такое сокеты - знает, что курл не может ничего такого, чего не может, допустим, телнет. Курл лишь предоставляет удобный интерфейс. А ошибка с контент-тайпом (специально для пионеров) - ничего общего с ХТТПС не имеет - точно так же "провалился" бы и запрос без ССЛ. И даже не "запрос провалился" - а просто запрашивающий не дал серверу понять, что в теле запроса придут данные из формы. А еще вдогонку, для тех же пионеров: когда пишете подобную программу - запрашивайте для начала свой собственный какой-нибудь скрипт, и только когда убедитесь, что запрос идет правильно и мог бы быть корректно обработан вашим скриптом - переходите к реальному УРЛу.
В настоящее время у меня готов гораздо более удобный вариант на PHP (от жабоскрипт-версии решил отказаться). Есть и улучшения в визуализации/интерактивности. Заинтересует - выложу исходники и пример использования. Само собой, и ссылку запостю. Однако, заранее предупреждаю: мой вариант, конечно, не претендует на конкуренцию с "коробочными" софтинами.
Для php-5.3 я создал в репозитории бранч, а для предыдущих версий имеется trunk, в котором как раз все так и обстоит: отдельно класс таблицы данных и Активная запись, которая этот класс таблицы использует.
Отдельно по поводу "Я бы сейчас не стал использовать PHP 5.3 в продакшене". Действительно, боязно, и никакой админ не станет ставить его для серьзного нагруженного проекта. И тем не менее:
1. Разработчики PHP Маркус Бёргер и Дмитрий Стогов в личной беседе высказали мнение, что PHP 5.3 сегодня стабильнее, нежели 5.2.x.
2. Релиз, вероятно, будет уже этим летом (кстати, это - в ответ на следующий комментарий)
3. Лично я использую PHP 5.3 в продакшене в проекте, предназначенном для внутренних нужд моей компании - работает второй месяц без сбоев (впрочем, как вы понимаете, нагрузок нет).
Naf - моя библиотека, название расшифровывается как "Not A Framework". ActiveRecord.php и Query.php лежат в папке db (и в неймспейсе naf::db). Кроме того, для работы ActiveRecord требуется naf::util::Validator, файл util/Validator.php. Если кого действительно заинтересует все это добро - помогу разобраться, можно выйти на связь по аське или почте.
ZF, конечно, тяжеловесный. Лично я в последнее время остановился на следующем варианте: примитивный ActiveRecord + QueryObject (а-я RoR, работает только под PHP-5.3+, благо проект позволяет использовать новейшие версии языка с их возможностями). Но! Если мне нужен более-менее сложный запрос - я пишу его ручками, не доверяя никаким конструкторам запросов. QueryObject же использую в сложных запросах только в том случае, если необходимо динамическое формирование различных фильтров в зависимости от запроса пользователя (QueryObject в данном случае гораздо удобнее, чем непосредственно конструировать каждый такой запрос). В моем случае я обошелся всего 2мя базовыми классами ActiveRecord & Query, не делал никаких абстракций от БД (вполне достаточно PDO с его массой возможностей). Если кому-то интересно, могу дать ссылку на СВН-репозиторий, проект доступен в открытых источниках.
One very important note that it is much more efficient to allow Sphinx to perform sorting, filtering and slicing the result set than to raise max matches count and use WHERE, ORDER BY and LIMIT clauses on MySQL side. This is for two reasons. First, Sphinx does a number of optimizations and performs better than MySQL on these tasks. Second, less data would need to be packed by searchd, transferred and unpacked by SphinxSE
Кстати: если есть еще связанные с этой темой аспекты, которые хотелось бы обсудить - милости прошу. Если только смогу - отвечу.
function my_error_handler($c, $m, $f, $l) {
if (error_reporting() & $c)throw new MyException($m, $c, $f, $l);
}
set_error_handler('my_error_handler');
http://vbolshov.org.ru/?id=18&ctrl=artic…
В настоящее время у меня готов гораздо более удобный вариант на PHP (от жабоскрипт-версии решил отказаться). Есть и улучшения в визуализации/интерактивности. Заинтересует - выложу исходники и пример использования. Само собой, и ссылку запостю. Однако, заранее предупреждаю: мой вариант, конечно, не претендует на конкуренцию с "коробочными" софтинами.
Отдельно по поводу "Я бы сейчас не стал использовать PHP 5.3 в продакшене". Действительно, боязно, и никакой админ не станет ставить его для серьзного нагруженного проекта. И тем не менее:
1. Разработчики PHP Маркус Бёргер и Дмитрий Стогов в личной беседе высказали мнение, что PHP 5.3 сегодня стабильнее, нежели 5.2.x.
2. Релиз, вероятно, будет уже этим летом (кстати, это - в ответ на следующий комментарий)
3. Лично я использую PHP 5.3 в продакшене в проекте, предназначенном для внутренних нужд моей компании - работает второй месяц без сбоев (впрочем, как вы понимаете, нагрузок нет).
Naf - моя библиотека, название расшифровывается как "Not A Framework". ActiveRecord.php и Query.php лежат в папке db (и в неймспейсе naf::db). Кроме того, для работы ActiveRecord требуется naf::util::Validator, файл util/Validator.php. Если кого действительно заинтересует все это добро - помогу разобраться, можно выйти на связь по аське или почте.
должно помочь...