26 Июль 2011

Обновление Kohana 3.1 до версии 3.2. Часть 24

Обновление Kohana с 3.1 до 3.2

Приветствую вас, уважаемый коллега по познанию веб-строительства, в свежей публикации блога Андрея Морковина, посвященной обновлению фреймворка Kohana с версии 3.1 до  3.2, которая на днях вышла в свет.

В процессе обновления мы будем использовать систему контроля версий и программу TortoiseSVN для отслеживания изменений.

Видеоурок:

Скачать видеоурок (МБ, *.wmv).

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

Однако, в 12-м видеоуроке (11 минут 50 секунд) я допустил негибкое решение, удалив валидационные правила в файле ядра kohana\www\modules\orm\classes\model\auth\user.php. Такой подход может привести к ошибкам после обновления.

Гибкое решение изменения валидационных правил

Необходимо воспользоваться специально созданным для таких случаев файлом kohana\www\modules\orm\classes\model\user.php.

Обратите внимание на содержимое файла – в нем указаны лишь инструкции наследования. Он является наследником Model_Auth_User (kohana\www\modules\orm\classes\model\auth\user.php).

Теперь, восстановив содержимое файла-родителя таким, как оно было в свежескачанном фреймворке Kohana 3.1 (скачать первоначальный вид файла kohana\www\modules\orm\classes\model\auth\user.php), мы можем изменить метод rules() гибким образом, внеся замещающий код в файл-потомок (kohana\www\modules\orm\classes\model\user.php).

Листинг 1. Код файла kohana\www\modules\orm\classes\model\user.php

<?php defined('SYSPATH') or die('No direct access allowed.');

class Model_User extends Model_Auth_User {

	public function rules()
	{
		return array(
			'username' => array(
				array('not_empty'),
				array('min_length', array(':value', 4)),
				array('max_length', array(':value', 32)),
			),
			'password' => array(
				array('not_empty'),
			),
			'email' => array(
				array('not_empty'),
				array('min_length', array(':value', 4)),
				array('max_length', array(':value', 127)),
				array('email'),
			),
		);
	}

} // End User Model

Пояснение к листингу 1

В методе rules() потомка отсутствует валидационное правило, запрещавшее использовать в качестве имени пользователя адрес эл. почты (kohana\www\modules\orm\classes\model\auth\user.php - 37-я строка).

Kohana будет работать следующим образом:

  • При создании экземпляра модели Model_User фреймворк будет искать файл описания user.php в папке kohana\www\application\classes\model.
  • Если искомый файл в папке application отсутствует, то фреймворк воспользуется описанием в файле kohana\www\modules\orm\classes\model\user.php.
  • Код в файле kohana\www\modules\orm\classes\model\user.php заменит метод rules() родителя. Все остальные методы и свойства модели User наследуются от родительского элемента Model_Auth_User (kohana\www\modules\orm\classes\model\auth\user.php).

Более логичным, по моему мнению, было бы расположить измененный файл kohana\www\modules\orm\classes\model\user.php в папку kohana\www\application\classes\model (скопировать его туда, чтобы потом долго не искать и внесенные изменения были очевидными). Как я уже и говорил, первым делом описание модели User Kohana будет искать именно в папке application. Найдя там скопированный файл user.php фреймворк полностью удовлетворится и все будет прекрасно работать.

Обновление Kohana

Теперь мы готовы обновить файлы фреймворка на свежую версию. Алгоритм действий следующий:

  • Создать свежую ревизию в нашей системе контроля версий (рис. 1-1).
  • Скачать последнюю версию фреймворка с сайта разработчика.
  • Скопировать с заменой содержимое архива свежей версии фреймворка в папку проекта.
  • Вызвать окно отправки коммита (см. рис. 1-1 и рис. 1-2).
  • Кликнув правой мышкой по именам файлов и выбрав пункт Compare with base (рис. 1-2) просмотреть изменения в появившемся окне сравнения версий (см. рис. 1-3).
  • В случае необходимости откатить изменения (например на рис. 1-3 видно, что рабочая копия файла bootstrap.php не содержимот кода ‘index-file’ => …, который нам необходим) достаточно выделить блок инструкций в правой части окна и выбрать пункт контекстного меню Use other text block (см. рис. 1-3).

Использование SVN для обновления Kohana

Рис. 1. Работа с системой контроля версий

С уважением, Андрей Морковин.

<< Предыдущий видеоурок курса Следующий видеурок курса >>

MAXCACHE: 0.85MB/0.00027 sec