Все потоки
Поиск
Написать публикацию
Обновить
0

Zend Framework *

Свободный фреймворк для разработки веб-приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Накопительная сборка ZF в один файл

Время на прочтение2 мин
Количество просмотров897
В тему объединения PHP-классов в Zend Framework'е (и других, следующих таким же соглашениям наименования и размещения) публикую свое решение, реализующее __autoload с накопительной сборкой автозагружаемых классов.

В нем учтены две известные проблемы:
  1. В файлах содержащих переменную __FILE__ осуществляется подстановка этой переменной.
  2. Обрабатывается случай параллельного выполнения скриптов.

Решение базируется на примере реализации __autoload из книги Дмитрия Котерова по PHP5 и идее описанной тут.
Читать дальше →

Сервис для сборки Zend Framework в один файл

Время на прочтение1 мин
Количество просмотров1.3K
Здравствуйте, уважаемые хабрачитатели!
Сей краткий пост посвящен небольшому сервису по сборке Zend Framework-a в один файл.
Зачем это делать, не раз уже писалось на хабре (например, тут), но если кому-то лень читать, я передам основной тезис: при использовании кэшера опкода (к примеру, eaccelerator) сборка фреймворка в один файл дает большой прирост производительности.
Сервис находится здесь. Кроме меня, его никто не тестировал, так что прошу сообщать о найденных багах.
На данный момент исходным материалом для сборок служит Zend Framework версии 1.10.2.
Буду рад, если кому-то это окажется полезным.

Zend_Db_Table_Select Dynamic Finder

Время на прочтение4 мин
Количество просмотров1.3K
Привет, Хабр! Dynamic Finder

Написал класс, использующий Zend_Db_Table_Select и позволяющий использовать Dynamic Finder в моделях в проектах на Zend Framework. Статья о том, что этот класс умеет, а также ссылка на исходный код предлагаются вашему вниманию.

Что это, зачем?



Dynamic Finder – способ, позволяющий получать данные из таблицы БД, записывая названия искомых полей в виде названия метода класса, а значения этих полей — в качестве аргумента метода. Например, может использоваться в экземпляре класса модели, связанной с какой-либо таблицей БД.

Dynamic Finder позволяет избежать написания ряда методов вида getById(…), getByLoginAndPassword(…), getAllByCountry(…) внутри модели в виде построения полноценных SQL-запросов и выборок. Вместо этого, в данной реализации достаточно подключить Dynamic Finder к модели должным образом, и, далее, программист может использовать эти методы модели непосредственно в контроллере или представлении. При этом реально эти методы в модели вообще не существуют.

Таким образом, экономится время работы программиста.

Dynamic Finder уже был реализован в том или ином виде в различных библиотеках и фреймворках, в частности, в Ruby on Rails.

В данной реализации Dynamic Finder является надстройкой, использующей Zend_Db_Select / Zend_Db_Table_Select, и предназначен для выборок из только одной таблицы.
Читать дальше →

Формы в Zend Framework

Время на прочтение6 мин
Количество просмотров13K
Меня часто спрашивают, какой мой любимый компонент в Zend Framework, и я всегда отвечаю: «Forms» (формы).
В парадигме модель-представление-контроллер формы всегда играют непростую роль. Конечно, форма — это всего лишь HTML,
но для меня это нечто более абстрактное.
По сути, форма — это HTML, средствами которого пользователь вводит и получает данные, но кроме этого форма еще выполняет
нормализацию, проверку, фильтрацию данных и вывод сообщений об ошибках, если они есть.
Это может потребовать довольно-таки значительного объема кода.

Читать дальше →

Фокус с HeadScript (сборка в один файл)

Время на прочтение8 мин
Количество просмотров3.2K
Если сделать так:
<?php $this->headScript()->appendFile('/js/my1.js');?>
<?php $this->headScript()->appendFile('/js/my2.js');?>
<?php $this->headScript()->captureStart() ?>
  var action = '<?php echo $this->baseUrl ?>';
<?php $this->headScript()->captureEnd() ?>

<?php echo $this->headScript(); ?>
<?php echo $this->magicHeadScript(); ?>


то вместо чего-то типа такого:
<script type="text/javascript" src="/js/my1.js"></script>
<script type="text/javascript" src="/js/my2.js"></script>
<script type="text/javascript">
  var action = '/123';
</script>

получим на выходе:
<script type="text/javascript" src="/cache/js/1b1004a203..._compressed.js"></script>

Читать дальше →

Zend Framework советы и трюки

Время на прочтение6 мин
Количество просмотров3.8K
Zend Framework советы и трюки

Перевод статьи Zend Framework tips and tricks.
автор: Juozas devBlog

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

Большинство рекомендаций фокусируется на легкости тестирования, легкости поддержки и других хороших практиках кодирования. Если Вы не знакомы с этими рекомендациями, советую начать читать как можно скорее. Уверен, что Вы совершаете описанные здесь ошибки и даже не подозреваете, как вы ошибаетесь. Поверьте, очень скоро Вы значительно улучшите свои навыки разработки.
Читать дальше →

Zend Framework 1.10.0 Stable Released

Время на прочтение1 мин
Количество просмотров768
Вышел очередной релиз хорошего и добротного фреймфорка для создания веб-приложений.

Из вкусного:
  • добавлены новые компоненты
  • заявлено об ускорении работы компоненты Zend_Pdf
  • переработан Zend_Loader (в том числе для поддержки новой возможности php 5.3 — работа с namespace )
  • Zend_Tool получил возможность настраивать подключения к СУБД, генерировать модели, формы и настраивать компоненту Zend_Layout
  • доработана компонента Zend_Application
  • и многое многое другое...

Кроме этого изменены страница загрузки и страница документации (теперь там можно выбирать версию фреймворка, по которой вам нужна справка)

Новость на сайте проекта

Zend_XmlRpc_Client и кросспостинг в LiveJournal

Время на прочтение5 мин
Количество просмотров2.5K
На новый год один добрый человек подарил мне домен. Если есть домен значит там что то должно быть. Решил сделать себе блог. Но так как последние года 2 я использовал livejournal я захотел чтобы мои сообщения синхронизировались с ЖЖ.
Программирую я при помощи любимого Zend Framework.
как написать пост в ЖЖ при помощи протокола xml-rpc и ZF

Cache ресурс для Zend Framework

Время на прочтение3 мин
Количество просмотров2.6K
Всем привет. Сразу хочу сказать что статья расcчитана для тех, кто уже хорошо знаком с данным фреймворком. В новых версиях Zend Framework придумана концепция инициализации компонентов приложения через плагины ресурсов. В стандартной поставке имеется достаточное их количество, но одного я так и не нашел. Таковым является кэш. Побродив по просторам Интернета и не найдя аналогов, я решил написать свой. И так, приступим.

Читать дальше →

Lazy load modules bootstrap

Время на прочтение5 мин
Количество просмотров5.2K
Многие как и я используют Modules ресурс, который позволяет использовать отдельные Bootstrap файлы для каждого модуля. Но этого ресурса есть один недостаток — он всегда загружает все Bootstrap файлы в независимости от того какое модули мы используем в конкретном запросе. Я решил предоставить решение данной проблемы
Читать дальше →

Динамические роли и права

Время на прочтение3 мин
Количество просмотров3.8K
Случилось мне давече писать динамическую систему ролей и прав для интернет-магазина.
Поскольку в интернете ничего нужного, кроме вот этой серии статей не нашел, придумал написать все сам.
Читать дальше →

Select теряет ON при JOIN'e

Время на прочтение1 мин
Количество просмотров652
Столкнулся с проблемой в ZF.
Есть две связанных таблицы. Обе наследуют Zend_Db_Table_Abstract. Формируем запрос к БД:

$select = $this->select();
$select->where(’Catalog.trashed = ?’, 1)
->where(’C.trashed = ?’, 0)
->join(array(’C’ => ‘Categories’), ‘C.id = Catalog.categoryid’, array())
->order($sort);


Смотрим запрос к БД:
SELECT `Catalog`.* FROM `Categories` AS `C` INNER JOIN `Catalog` WHERE (Catalog.trashed = 1) AND (C.trashed = 0) ORDER BY `sort` ASC

ON в JOIN потерялся.
А вот и решение:

Настройка Zend Framework 1.9.5 на Denwer 3

Время на прочтение2 мин
Количество просмотров11K
Здрасте всем! Сегодня я расскажу и покажу как поставить Zend Framework 1.9.5 на всеми известный Денвер 3. Но настройка будет не простая, а с возможностью использования zf Command Line Tool.
Ну давай попробуем...

Ближайшие события

Вышел Zend Framework 1.9.5

Время на прочтение1 мин
Количество просмотров1.1K
Очередной багфикс-релиз. Исправлено около 30 багов, большинство из которых было найдено в специально отведенные дни «охоты на баги» в текущем месяце.

Список исправлений можно посмотреть тут:
framework.zend.com/changelog/1.9.5

Качаем, как всегда, отсюда:
framework.zend.com/download/latest

Сборка Zend Framework

Время на прочтение5 мин
Количество просмотров1.8K
Для ускорения Zend Framework очень действенен такой финт: собираем все классы, которые нам нужны, в один фаил, а потом включаем eAccelerator и инклудим его в самом начале. Один фаил + еАкселератор круче, чем много фаилов.

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

Читать дальше →

Zend Framework и магические кавычки

Время на прочтение2 мин
Количество просмотров2.6K
Zend Framework & Magic QuotesСразу стоит заметить, что с выходом php 6 эта статья будет не актуальна, а пока…

Каждый, кто имеет опыт работы с php, наверняка знает или слышал о директиве «magic_quotes_gpc»(магические кавычки). Если флаг директивы установлен в «On», то происходит автоматическое экранирование данных передаваемых в массивах $_GET, $_POST, $_COOKIE(о чём и намекает аббревиатура gpc на конце директивы).

При разработке сайта на Zend Framework'е одним из требований является отключенные «magic_quotes_gpc». Всё дело в том, что Zend Framework сам экранирует данные и при включённой директиве «magic_quotes_gpc» получается двойное экранирование, что не есть хорошо и красиво. Проблема не была бы столь острой, если бы все хостинги давали право менять значение «magic_quotes_gpc». Я уже не раз сталкивался с такой проблемой и нашёл на мой взгляд довольно элегантное решение.

Читать дальше →

Интересный подход для кэширования моделей

Время на прочтение3 мин
Количество просмотров1.7K
На днях я получил задание реализовать кэширование в моделях. В обсуждениях с коллегами родилась довольно интересная, на мой взгляд, идея, которую я бы хотел выставить на ваш суд.
Читать дальше →

небольшой хак для Zend_Db_Table_Row класса

Время на прочтение3 мин
Количество просмотров1.2K
Основной любого современного web-приложения является взаимодействие с базой данных. В случае если для реализации приложения выбран Zend Framework мы неизбежно столкнемся с использованием класса Zend_Db_Table_Abstract. Этот класс успешно реализует CRUD функции, необходимые для работы с БД, но, тем не менее, эта конструкция содержит один недостаток.
Читать дальше →

Как правильно использовать Zend_Paginator

Время на прочтение2 мин
Количество просмотров5.2K
Мой друг написал в песочнице статью, которая оказалась для меня (и не только) полезной, но через 7 дней была удалена. С его разрешения привожу её ниже. Если кому она тоже будет полезной, то он просит выслать ему инвайт на alxsad@gmail.com .

Привет всем любителям Zend Framework. Хочу расказать как правильно использовать компонент Zend_Paginator. Я очень часто видел, как плохо с ним работают некоторые программисты. Давайте посмотрим на код, представленный ниже:

$pages = new Model_Pages();
$paginator = Zend_Paginator::factory($pages->getRows());
$paginator->setItemCountPerPage(1);
$paginator->setPageRange(1);
$paginator->setCurrentPageNumber($this->getRequest()->getParam('page', 1));
Zend_Paginator::setDefaultScrollingStyle('Sliding');
$this->view->pages = $paginator;
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('paginator.phtml');
$this->view->paginator = $paginator;


* This source code was highlighted with Source Code Highlighter.


Данный код я встречал на очень многих блогах, и даже, если не ошибаюсь, в самом мануале по Zend Framework. Давайте теперь посмотрим на запрос, который у нас получиться в результате:

image

Видите? Проблема заключается в том, что люди сразу забирают ВСЕ записи из базы данных, а потом уже из них выбирают нужные. Это огромная ошибка. Поэтому читаем как это делается
правильно.
Читать дальше →

Zend Framework: стремимся к MVC для Javascript, CSS

Время на прочтение5 мин
Количество просмотров5.4K
При постепенном изучении Zend Framework и построении с его помощью базовых приложений я заметил, что клиентский js-код и инлайновые стили попадают в скрипты вида, при этом они начинают занимать почти половину всего скрипта. В принципе, ничего плохого в этом нет, но мне такая мусорка начала давить на глаза. Кроме того, инлайновый js постепенно превращается в жестко привязанную к скрипту вида конструкцию, полностью зависимую как от самого скрипта, так и от переданных контроллером данных. При всем этом не оставляет желание писать на javascript код максимально красивый при помощи библиотеки jQuery.

Итак, что в данном случае можно сделать. Первая же мысль — вынести инлайновые скрипты и стили во внешние файлы и подключать их через помощники вида headLink и headStyle. Если со стилями все примерно понятно — достаточно специфический стиль для конкретного вида вынести в css файл и подключать его по мере необходимости, то js по-прежнему зависим от данных.
Читать дальше →