10 неотразимых причин использовать Zend Framework

В данной статье мы приводим 10 причин, почему следует использовать Zend Framework в следующем проекте. Это поможет вам сделать обоснованный выбор вне зависимости от того, начинаете ли вы новый проект или улучшаете старый.

Причина 1. Наследование классов

Zend Framework является полностью объектно-ориентированной рабочей средой, и поэтому она реализует много объектно-ориентированных (ОО) концепций, таких как наследование и интерфейсы классов. Это делает большинство (если не все) компонентов ZF расширяемыми до некоторой точки. Разработчики могут реализовывать их собственные особенные вариации индивидуальных компонентов без взламывания самого кода ZF. Обладая такой возможностью настройки ZF тем самым позволяет вам создавать функционал, который будет уникальным для вашего проекта. Но благодаря объектно-ориентированной натуре, вы будете иметь возможность также использовать данный функционал и в других проектах.

Пример

Zend Framework имеет очень большой компонент Validation, который позволяет вам использовать проверку данных, поступающих из форм. В ZF формы также  обрабатываются как объекты и представлены компонентом Zend_Form.

Допустим, вы создаете пользовательскую функцию для проверки URL, чтобы ограничить ввод URL от пользователя. Быстрее всего реализовать проверку примерно так:

$isValid = filter_var($submitted_url, FILTER_VALIDATE_URL);

Но это не соответствует  OO сущности объекта формы, так как не используется в контексте формы. Для решения задачи мы создаем новый класс Zend_Validator_Url, который является наследником класса Zend_Validate_Abstract:

<?php
class Zend_Validate_Url extends Zend_Validate_Abstract
{
	const INVALID_URL = 'invalidUrl';

	protected $_messageTemplates = array(
		self::INVALID_URL   => "'%value%' не является правильным URL.",
	);

	public function isValid($value)
	{
		$valueString = (string) $value;
		$this->_setValue($valueString);

		if (!Zend_Uri::check($value)) {
			$this->_error(self::INVALID_URL);
			return false;
		}
		return true;
	}
}

В действительности используется класс Zend_Uri, который уже имеет метод проверки URL, используемый нами. Но так как он не является наследником класса Zend_Validate_Abstract, мы реализовали класс-оболочку, которая является наследником нужного абстрактного класса. Такой подход дает нам возможность использовать функцию проверки URL класса Zend_Uri в нашем объекте Zend_Form следующим образом:

<?php
class Form_Site extends Zend_Form
{
	public function init()
	{
		$this->setMethod('POST');
		$this->setAction('/index');

		$site= $this->createElement('text', 'siteurl');
		$site->setLabel('Site URL');
		$site->setRequired(true);

		//  Добавляем пользовательскую функции проверки!
		$site->addValidator(new Zend_Validate_Url());
		$this->addElement($site);
		$this->addElement('submit', 'sitesubmit', array('label' => 'Submit'));
	}

}

Если мы хотим проверять, что URL является правильным адресом видео YouTube, нужно сделать что-то подобное:

<?php
class Zend_Validate_YouTubeUrl extends Zend_Validate_Abstract
{
	const INVALID_URL = 'invalidUrl';

	protected $_messageTemplates = array(
		self::INVALID_URL   => "'%value%' не является правильным URL.",
	);

	public function isValid($value)
	{
		$valueString = (string) $value;
		$this->_setValue($valueString);

		if (strpos($value, "http://www.youtube.com/watch?v=") !== 0) {
			$this->_error(self::INVALID_URL);
			return false;
		}
		return true;
	}
}

Если добавим данный код на сайт в качестве функции проверки, то это даст нам уверенность в том, что все передаваемые URL начинаются с правильного префикса URL YouTube видео.

Причина 2. Объектно-ориентированная сущность

В Zend Framework все является объектом, как можно увидеть из выше приведенного примера. Такое положение считается недостатком, потому что якобы усложняет код. Тем не менее, основным преимуществом является возможность использовать код повторно, а ведь никто не любит повторять сам себя.

Пример

У нас есть классы Zend_Validate_Url и Form_Site из примера выше, давайте используем уже готовый функционал.

<?php

class IndexController extends Zend_Controller_Action
{

    public function indexAction()
    {
		$siteform = new Form_Site();

		if( $this->_request->isPost() && $siteform->isValid($this->_request->getPost()) ) {
			//Что-то делаем, если ввод правильный
			$this->_redirect("/index/correct");
		}
		$this->view->siteform = $siteform;
    }

    public function correctAction()
    {
		// Повторно используем объект наш класс Form_Site!
		$this->view->siteform = new Form_Site();
    }
}

В браузере это должно выглядеть так:

Если попробовать передать неправильный URL, то вы увидите работу нашей функции проверки:

А здесь, можно увидеть то, что случится, если ввести правильный URL:

Как можно заметить, мы нигде не повторяли код объекта нашей формы.

“Класс Zend_Validate может быть использован и другим образом, не только в контексте класса Zend_Form. Вы просто реализуете класс Zend_Validate и вызываете метод isValid($parameter),  передавая ему значения, которые нужно проверить.”

Причина 3. Используйте то, что нужно, и забудьте обо всем остальном.

В сущности, Zend Framework является просто набором классов. Обычно, используются компоненты Zend MVC для того, чтобы создать полноценный проект ZF, но во всех других случаях, можно просто загрузить компоненты, которые нужны. Структура ZF представляет разъединенную конструкцию, а это  означает то, что можно использовать преимущества компонентов одной библиотеки, а не всей рабочей среды целиком.

В других статьях вам мог попадаться термин клейкая рабочая среда.  ZF по умолчанию является такой клейкой рабочей средой. Ее разобщенная натура позволяет “приклеивать” ее к вашим уже существующим приложениям.

Существует конкуренция между клейкими рабочими средами и рабочими средами полного цикла. Рабочая среда полного цикла обеспечивает все, что нужно, для создания вашего проекта (например, реализация ORM, генерация кода, и так далее). Рабочая среда полного цикла требует как минимум создания проекта, но тем самым налагая жесткие ограничения на ваше приложение.

Пример

Допустим нам нужно вернуть информацию об определённом видео на YouTube. Zend_Gdata_Youtube является компонентом ZF, который позволяет получить доступ к данным с YouTube с помощью API GData. Получение информации реализуется просто:

//Нужно загрузить класс Zend_Gdata_Youtube, предположим, что ZF располагается в include_path PHP
include_once "Zend/Gdata/Youtube.php";

$yt = new Zend_Gdata_YouTube();
// getVideoEntry получает ID видео на YouTube, которое обычно представляет собой набор символов,
// которым заканчивается URL YouTube URL. Например http://www.youtube.com/watch?v=usJhvgWqJY4
$videoEntry = $yt->getVideoEntry('usJhvgWqJY4');
echo 'Video: ' . $videoEntry->getVideoTitle() . "<br />";
echo 'Video ID: ' . $videoEntry->getVideoId() . "<br />";
echo 'Updated: ' . $videoEntry->getUpdated() . "<br />";
echo 'Description: ' . $videoEntry->getVideoDescription() . "<br />";
echo 'Category: ' . $videoEntry->getVideoCategory() . "<br />";
echo 'Tags: ' . implode(", ", $videoEntry->getVideoTags()) . "<br />";
echo 'Watch page: ' . $videoEntry->getVideoWatchPageUrl() . "<br />";
echo 'Flash Player Url: ' . $videoEntry->getFlashPlayerUrl() . "<br />";
echo 'Duration: ' . $videoEntry->getVideoDuration() . "<br />";
echo 'View count: ' . $videoEntry->getVideoViewCount() . "<br />";

Код взят из  Google Developer’s Guide

Данный код выведет:

Нужно отметить следующее: данный компонент Zend Framework (GData) является официально утвержденной Google  PHP библиотекой для доступа к их API. Рабочая среда с разъеденной структурой позволяет использовать компоненты в любом проекте вне зависимости от  инструментов, на которых реализуется проект..

Причина 4. Она имеет готовое решение для  множества задач!

Одно из самых ценных свойств Zend Framework - это ОГРОМНОЕ количество компонентов. Нужно организовать аутентификацию пользователя? Используйте Zend_Auth. Нужно контролировать доступ к ресурсам? Посмотрите на Zend_Acl. Нужно создать формы? Есть Zend_Form. Нужно читать фид RSS? Вы можете использовать Zend_Feed для этого. Это просто швейцарский армейский нож с классами PHP!

Zend имеет несколько демонстраций, которые показывают, как использовать различные компоненты:

Чтобы посмотреть на них, лучше всего скачать полный пакет Zend Framework и проверить его на своей машине.

Полный список компонентов можно получить из  Руководства по Zend Framework.

Причина 5. Нет реализации модели - выбирайте свое приключение!

Это единственный довод для многих разработчиков не использовать Zend Framework – в ней нет собственной реализации Модели. Для, тех кто не знает, что такое Модель - это буква M в акрониме MVC (Model-View-Controller : Модель-Вид-Контроллер), архитектуре программирования, которая используется большинством рабочих сред PHP.

Значит ли это, что Zend Framework - рабочая среда, которая поддерживает только “VC”?

Да и нет.

Да. Потому что она не имеет собственно реализации Модели. Это создает трудности для некоторых людей на пути использования ZF, особенно, если они переходят с использования рабочей среды, которая имела собственную реализацию Модели (например, CakePHP, Symfony, или даже Ruby on Rails).

С другой стороны , нет. Это рабочая среда MVC, так как реализован общий способ доступа к базе данных (используется Zend_Db). А он в действительности полагается на некоторый вид реализации Модели. Казалось бы, почему бы не реализовать Модель? Философия Zend Framework утверждает, что реализация модели уникальна для проекта, и не возможно создать абстрактную реализацию, потому что неизвестно, что нужно сделать. Они полагают, что модель должна быть реализована самим разработчиком.

Что в этом хорошего?

Отсутствие реализации Модели означает, что разработчик свободен использовать все, что считает нужным для реализации и даже может интегрировать существующую реализацию. Будучи свободным от ограничений, разработчик может создать более сложную реализацию, чем простое представление таблицей, что выполняется обычной реализацией Модели. Модель содержит бизнес логику. Она не должна быть ограничена таблицей базы данных. Она должна задавать требования для соединения одной таблицы с другой. Таким образом можно размещать код программы в Модели, что соответствует парадигме “Тонкий Контроллер, толстая Модель” MVC.

Как использовать Zend Framework если нет идей, как создать собственную модель?

Для начинающих урок Быстрый старт Zend Framework показывает хороший способ реализации модели. В уроке реализуется ORM подход для реализации модели. Создаются три файла: Model, которая абстрактно реализует ваш объект; Mapper, который формирует данные из базы данных для Модели; и объект таблица базы данных, который использует Mapper для получения данных. Код урока "Быстрый старт ZF" использует данный подход для реализации модели для простого приложения "Гостевая книга".

Для тех, кто задается вопросом “Почему я должен кодировать все это самостоятельно, когда в других рабочих средах все уже сделано за меня?”, ответ скрывается в следующей причине...

Причина 6. Интегрируем все, что угодно со всем, что пожелаем!

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

Такие действия можно осуществлять и в обратном направлении- можно интегрировать ZF в другие библиотеки. Например, можно интегрировать ZF в Symfony. 

Пример

Например, попробуем использовать Doctrine для реализации Модели. Продолжая выше разработанный пример сайта, можно реализовать таблицу базы данных:

CREATE TABLE  `site` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `url` varchar(100) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`id`)
);

Для интеграции Doctrine в ZF нужно убедиться, что определены правильные установки. Для руководства использования Doctrine с ZF можно воспользоваться уроком с сайта dev.juokaz.com.

Предположим, что все сделано правильно, нужно только сгенерировать  файл модели, запустив файл doctrine-cli.php из урока:

php doctrine-cli.php generate-models-db

Вы должны увидеть сообщение:

Затем, нужно проверить папку, которая служит для сохранения сгенерированных классов Модели.

Теперь в классе контроллера можно использовать класс модели сайта.

<?php

class IndexController extends Zend_Controller_Action
{

    public function indexAction()
    {
		$siteform = new Form_Site();

		if( $this->_request->isPost() && $siteform->isValid($this->_request->getPost()) ) {
			
			$site = new Model_Site();
			$site->url = $this->_request->getParam('siteurl');
			$site->save();
			
			$this->_redirect("/index/correct");
		}
		$this->view->siteform = $siteform;
    }

    public function correctAction()
    {
		$this->view->siteform = new Form_Site();
    }
}

Если теперь проверить таблицу sites, то в ней должна быть наша запись:

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

Причина 7. Руководства и стандарты

Zend Framework разрабатывалась в соответствии с Руководством участника разработки, основные утверждения которого гласят:

  1. Каждый разработчик кода или документации на любом уровне (хотя нескольких строк кода или нового компонента) должен подписать Contribute License Agreement (CLA).
  2. Код должен быть протестирован с помощью PHPUnit.
  3. Код должен жестко соответствовать Стандартам кодирования

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

Причина 8. Всякий код виновен, до тех пор пока не докажет свою невиновность (Разработка, управляемая тестированием)

Разработка, управляемая тестированием - это техника программирования, в которой требуется, чтобы разработчик перед тем, как написать функцию, написал тест для функции. Разрабатывая тест вначале, программист:

  1. Думает о возможных вариантах использования кода
  2. Создает белый список ввода и вывода
  3. Упрощает собственный код
  4. Упрощает процедуру передачи кода от одного человека к другому

Zend Framework облегчает следование процедуре разработки, управляемой тестированием с помощью Zend_Test, который использует PHPUnit (популярную рабочую среду для тестирования). PHPUnit позволяет тестировать не только Контроллеры, но также ваши библиотеки и функции модели.

Интегрирование PHPUnit и Zend Framework

Установка Zend Framework и PHPUnit не очень сложная. Если вы выполните ее хотя бы один раз, то сможете использовать подобную процедуру в своих будущих  проектах. Следующие шаги предполагают, что используется Zend_Tool для конструирования структуры вашего проекта и файлов.

Сначала устанавливаем PHPUnit, например, через PEAR:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

Затем открываем файл phpunit.xml, который сгенерирован Zend_Tool. Его можно найти в папке tests в корневом каталоге вашего проекта. Добавляем следующие строки:

<phpunit bootstrap="./TestHelper.php" colors="true">
<testsuite name="Zend Framework Unit Testing">
<directory>.</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../library</directory>
<directory suffix=".php">../application</directory>
<exclude>
<directory suffix=".phtml">../application</directory>
</exclude>
</whitelist>
</filter>
</phpunit>

После сохранения phpunit.xml, создаем новый файл внутри той же директории, что и phpunit.xml, и называем его TestHelper.php. Данный PHP файл поможет установить окружение для теста.

<?php
// запускаем буфер вывода
ob_start();

// устанавливаем пути приложения и окружение
define('BASE_PATH', realpath(dirname(__FILE__) . '/../'));
define('APPLICATION_PATH', BASE_PATH . '/application');
define('APPLICATION_ENV', 'testing');

// Путь для библиотек 
set_include_path(
    '.'
    . PATH_SEPARATOR . BASE_PATH . '/library'
    . PATH_SEPARATOR . get_include_path()
);

// Будем вылавливать все ошибки и предупреждения
error_reporting(E_ALL|E_STRICT);

require_once 'ControllerTestCase.php';

Затем создаем родительский класс ControllerTestCase, который будет родителем всех наших контроллеров. Таким образом реализуются методы, которые обычно используются во всех классах теста контроллеров.

<?php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    public $application;

    public function setUp()
    {
        $this->application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
        );

        $this->bootstrap = $this->application;
        parent::setUp();
    }

    public function tearDown()
    {
        $this->resetRequest();
        $this->resetResponse();
        parent::tearDown();
    }
}

Создаем класс теста контроллера:

<?php
require_once realpath(dirname(__FILE__) . '/../../ControllerTestCase.php');

class IndexControllerTest extends ControllerTestCase
{
    public function testCallingRootTriggersIndex()
    {
        $this->dispatch('/');
        $this->assertController('index');
        $this->assertAction('index');
    }

    public function testCallingBogusTriggersError()
    {
        $this->dispatch('/bogus');
        $this->assertController('error');
        $this->assertAction('error');
        $this->assertResponseCode(404);
    }
}

Теперь осталось только запустить тест. Открываем командную строку, переходим в папку tests и набираем:

phpunit

Вывод должен быть похож на следующую картинку:

Причина 9. Сообщество и документация

Благодаря множеству компонентов, сложности, и полностью объектно-ориентированному подходу , Zend Framework весьма трудоемок в освоении. несколько облегчает процесс полнота документации и развитое сообщество. Для начала, Zend Framework Programmer’s Reference Guide кичится полным руководством по всем компонентам ZF, с примерами кодом и используемыми теориями.

Кроме того, существует огромное количество блогов, которые содержат различные советы и трюки, посвященные Zend Framework. Zend также имеет сайт под назавнием Zend Developer Zone, который публикует уроки по Zend Framework, проводит вебинары, размещает подкасты и статьи о PHP. Другой сайт, Zend Casts, предлагает большое количество видео уроков по различным компонентам Zend Framework. Последние в списке, но не по значимости онлайновая книга Zend Framework: Surviving the Deep End.

Кроме того есть еще список рассылки Zend Frameworkыофициальный форум Zend Framework, неофициальный форум Zend Framework или неофициальный IRC канал Zend Framework.

Причина 10. Сертификация!

Если вы все еще сомневаетесь в том, что надо осваивать и использовать Zend Framework, данный факт очень сильно отличает Zend Framework от всех остальных инструментов. Zend не только предлагает сертификацию по Zend Framework, но и по PHP. Предлагая сертификацию, Zend помогает вам использовать ваши знания в PHP и Zend Framework для улучшения портфолио или резюме. Сайт по сертификации Zend содержит список аргументов. Вот некоторые из них:

  1. Выделение среди конкурентов при поиске работы
  2. Размещение профайла специалиста на желтых страницах Zend для профессионалов PHP
  3. Стать членом эксклюзивной группы ZCA на сайте социальной сети Linkedin
  4. Получить скидку на участие в конференциях Zend PHP

Дополнение

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

  1. ОЧЕНЬ крутая кривая изучения. Для опытного разработчика PHP освоить ZF будет не трудно, но для новичка имеется огромный объем материала для изучения!
  2. Большой объем. Так как Zend Framework имеет много компонентов, ее суммарный объем значительно выше по сравнению с другими инструментами. Например, системная папка CodeIgniter имеет размер 1.5MB, а Zend Framework - 28MB.
  3. Нет постоянного инструмента конструирования. Хотя Zend_Tool имеет некоторую функциональность, но очень скромную, по сравнению с утилитами конструирования рабочих сред полного цикла, таких как CakePHP или Symfony.
  4. Не дружественная к хостингам. Структура папок, которая генерируется Zend_Tool, предполагает, что публичная папка будет единственной директорией, доступной через http, что предполагает, что пользователь имеет возможность создать виртуальный сервер для проекта. Такое предположение неверно для многих хостингов.
  5. Слишком "клейкая". Так как все существует в раздельных классах, иногда очень трудно представить, как все работает. Без Zend_Tool весьма сложно  установить рабочую структуру проекта.

Заключение

Большое количество улучшений было сделано в различных рабочих средах PHP за последние несколько лет. Существуют такие инструменты, как Codeigniter, CakePHP и Symfony , которые тоже пригодны для использования. Выбор рабочей среды определяется тем, насколько комфортно вы себя в ней ощущаете. Ни один из инструментов не поможет вам, если вы не сможете полностью использовать все его преимущества.

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

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: net.tutsplus.com/tutorials/php/10-compelling-reasons-to-use-zend-framework/
Перевел: Сергей Фастунов
Урок создан: 13 Августа 2010
Просмотров: 51936
Правила перепечатки


5 последних уроков рубрики "PHP"

  • Аутентификация через Twitter

    Привет, друзья! Да, да, да, наконец дошли руки до долгожданного урока, о котором просили многие из вас: реализации аутентификации через Twitter.

  • Новые возможности PHP 5.6

    В этой статье посмотрим на то, что нас ждёт в следующем релизе языка PHP.

  • PHP-разработчикам о структурах данных: двоичные кучи

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

  • Генераторы в PHP

    Если вы что-нибудь слышали об итераторах, тогда вы, скорее всего, знаете, что итерация - очень важная концепция для мира программирования, но имплементация необходимых интерфейсов для создания объектов-итераторов может быть весьма хлопотным занятием из-за большого количества шаблонного кода, который необходимо написать для работы итератора. Но с релизом PHP 5.5 к нам наконец-то пришли генераторы!

  • Проектируем базу данных: система друзей а-ля Facebook

    Мы уже публиковали несколько уроков, посвящённых проектированию различных модулей, подобных тем, что используются на Facebook. Сегодня мы продолжим эту практику и рассмотрим как спроектировать БД для создания системы запросов в друзья.

Комментарии (21):
или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете
  • 14 Августа 2010 11:14
    НеБот
    Вообще спасибо Zend за ОО php 4 - 6, но везде совать объекты, скажу откровенно, просто неудобно. Многие разработчики, работая с ничего_не_расширяющими_ОО_фреймворками, считают, что они БОГИ, только потому, что используют объекты. Здесь же добавляются большие возможности, причём довольно интересные, зачот. Вообще, я перестал уважать Zend после появления Zend Encoder и его расковыривания :D
  • 14 Августа 2010 11:24
    Vladimir
    Это все конечно класно, супер правильно, ооп, наследование итп. Но вот только 98% сайтов всеравно выгоднее делать на готовых CMS или CMF, это вразы быстрее и дешевле как в плане разработки так и в плане поддержки. Плюс фреймворк не даст такого готового функционала, как дают современные CMS. На фреймворке можно делать или какой-то небольшой сайт (напр. чтобы доказать свою крутость:)) или большой, сложный сайт большой командой.
    • 16 Июня 2012 13:25
      mak326428
      Вы полностью не правы. CMS не очень гибкие. Вы не понимаете API, и не можете понять что же там такое происходит. Возьмём тот же Symfony проект - всё отлично понятно, если какая то неполадка, можете сразу же исправить. В случае CMS вам придётся ждать новой версии и ваш сайт взломают или разбираться в огромном количестве кода за считанные дни.
    • 16 Июня 2012 13:28
      mak326428
      Что касается ООП - это лучшое изобретение человечество. Я сам разработчик на C# - там сплошное ООП, вы уж мне поверьте. Поэтому перейти на PHP проще простого - с уровня ничего незнающего, буквально за месяц поднялся до уровня Symfony и Zend. ООП - это ключ почти ко всем языкам программирования.
  • 14 Августа 2010 17:10
    Flok
    ещё бы научили, что такое ООП в php с примерами, было бы вообще замечательно )
  • 15 Августа 2010 11:43
    Сумрак
    "10 неотразимых причин" - сильно сказано)) Vladimir, вы абсолютно не правы, CMS никогда не заменять настоящий сайт. Flok, посмотрите уроки по тегам, я точно помню уроки по ООП
  • 15 Августа 2010 13:35
    Серега
    "неотразимые причины" - бред!!! это то же самое "вкус этих яблочек был симпатичный". ребята, не позорьтесь, учите русский язык =)
  • 15 Августа 2010 15:50
    Сумрак
    Серега, вот и я говорю))
  • 16 Августа 2010 09:53
    Khimar
    Я тоже считаю, что ZF не везде уместен. Он удобен при разработке больших проэктов группой разработчиков
    • 21 Ноября 2010 13:52
      alex_chz
      Для больших проектов или Ruby или Java
  • 16 Августа 2010 18:30
    Alexsin
    Flok, если пхп знаешь на достаточном уровне, то и ООП в нем сам осилишь.
  • 18 Августа 2010 22:18
    Ctalingrad
    Zend проходит как библиотека но не как php framework! Это моё мнение и Я её только так и использую )
    • 21 Ноября 2010 13:48
      alex_chz
      Соглашусь, сам иногда выдирал некоторые библиотеки с Zend'а в проекты))
  • 30 Августа 2010 07:18
    turin
    4Flok: Для начала советую освоить ООП как таковое, для этого лучше всего поизучать/почитать книгу по Java "Философия Java" ("Thinking in Java"), там ИМХО наиболее полно и просто рассказывается про ООП и систему работы с ООП.
  • 21 Ноября 2010 13:47
    alex_chz
    Уже 6 мес программлю на Symfony. С нетерпением жду выхода Symfony2 с Doctrine2. Думаю, будет супер))
  • 6 Февраля 2011 11:13
    Overlord888
    Лично я считаю, что ZF слишком крутой... А так, для небольших проектов я использую CMS'ки (вроде Jooml'ы или WordPress'а). А для больших, серьежных проектов Yii и Kohan'у.
  • 16 Марта 2011 11:34
    dr1m
    только ZF :)
  • 17 Февраля 2012 06:31
    msangel
    >>Это легко выполняется с помощью класса оболочки для Zend_View_Abstract, который использует реализацию Smarty для рисования вида.. ссылка битая. а жаль (:
  • 1 Октября 2012 18:13
    ГерманКлюшин
    Одного не пойму - как нормально второй ini файл сохранить из Zend, так чтобы он потом подключался автоматом?
  • 18 Октября 2013 13:26
    olexandr_b
    Почему так восхвалять именно Zend Framework? Я начинал его учить пару раз и забрасывал - потому что очень сложный в сравнении с другими фреймворками, которые я уже знаю. Тот же Codeigniter в 200 раз понятнее. И вот доходит мозг до 100500-го непонятного места в ZF и говорит мне - зачем тебе это? Это бессмысленно! Ты же можеш проект за 4 недели сделать на Codeigniter, а не 2 месяца учить Zend Framework и потом ещё 2 месяца делать проект. Я не пойму - почему ZF такой популярный? Серйозный вопрос - не пойму.
  • 8 Января 2014 18:18
    Konda
    У ООП нет будущего. И ZEND это просто полный дебилизм в километрах кода. Это просто обертки для функций самого PHP которые якобы облегчают труд программиста.Но как это все тормозит! Почему-то об этом все молчат. Сайты(и не только) должны быть легкие, быстрые и использовать минимум ресурсов.
^ Наверх ^