Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

7. Взаимодействие модели, контроллера и шаблона

Рассмотрим контроллер, обрабатывающий данные модели и передающий эти данные в шаблон.

Пример контроллера. Листинг 7.1

class Controller_Index extends Controller_Template {

//определение перемнной шаблона

public $template = ‘v_index’;

public function before()

{

parent::before();

$this->template->title = ‘Интернет-магазин’;

}

public function action_index()

{

$this->template->content = ‘Главная страница’;

}

public function action_catalog()

{

$products = Model::factory(‘catalog’)

->all_products();

$this->template->content = View::factory(‘v_catalog’, array(‘products’ => $products,)

);

}

}

8. Создание новых классов и подключение сторонних библиотек

Новые классы будем помещать в папку classes.

Создание нового класса. Листинг 8.1

<?php defined(‘SYSPATH’) or die(‘No direct script access.’);

class Myclass {

public static function myresult() {

return “Вызван метод myresult”;

}

}

Обратите внимание на первую строчку, где после открытия php идет проверка на существование константы SYSPATH.

Чтобы в контроллере вызвать данный класс, мы пропишем:

Вызов метода. Листинг 8.2

public function action_index()

{

echo Myclass::myresult;

}

Двойное двоеточие указывает на то, что метод myresult объявлен статичным, что позволяет вызывать данный метод без создания экземпляра класса.

Для подключения сторонних библиотек, саму библиотеку поместим в папку classes. Далее с помощью функции require и констант APPPATH (папка aplication) и EXT (расширение файла .php) подключим загрузочный файл библиотеки.

Рассмотрим подключение библиотеки phpQuery:

Подключение сторонних библиотек. Листинг 8.3

public function action_test() {

require APPPATH.'classes/phpQuery/phpQuery/phpQuery'.EXT;

$habrablog = file_get_contents('http://127.0.0.1/obmenka/');

$document = phpQuery::newDocument($habrablog);

$hentry = $document->find('body');

echo $hentry;

}

9. Конфигурирование

В kohana предусмотрена папка config, где можно создавать конфигурационные файлы настроек, в которых хранятся переменные настроек сайта: названия сайта, title, keyword, description – по умолчанию, переменные для подключения к базе данных и т.д., а также конфигурационные настройки подключаемых модулей, (модуль для работы с базой данных, модуль постраничной навигации и т.д.). Почти все модули имеют конфигурационные файлы, которые нужно будет копировать и вставлять в папку config.Сперва Kohana ищет файл настроек в папке config, если в данной папке настройки для модуля не нашлись, то тогда используются настройки из папки с модулем.

Конфигурационные файлы для каждого модуля будем рассматривать отдельно, при изучении данного модуля. Сейчас рассмотрим общий конфигурационный файл.

Файл настроек conf.php. Листинг 9.1

<?php defined(‘SYSPATH’) or die(‘No direct script access.’);

return array(

‘site_name’ =>‘Школа PHP’,

‘site’ => array(

‘keyword’ =>‘Школа web, школа php’,

‘description’ =>‘Здесь вы можете скачатькниги по PHP’,

‘title’ =>‘Школа PHP’

)

);

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

Вызов подключаемого файла настроекconf.php. Листинг 9.2

public function action_index()

{

$config = Kohana::$config->load(‘conf’);

$value = $config->get(‘site’);

print_r($value);

}

Таким образом, из файла conf.php, а в переменную $value поступает массив. Для создания массива мы использовали метод get().

Для того чтобы изменить значение переменной в файле конфигурирования, передадим новые значения через метод set()

Переопределение переменных файла конфигурации. Листинг 9.3

public function action_index()

{

$config= Kohana::$config->load(‘conf’);

$config->set(‘var’, ‘new_value’);

}

Еще один вариант вывода

Альтернативный вариант вызова файла конфигурации. Листинг 9.4

Файл конфигурации database.php

Return array(

    ’default’=>array(

        ’connection’=> array(

            ’hostname’=>‘localhost’

        )

    )

);

 

// Вызоввэкшне:

$hostname= Kohana::$config->load (‘database.default.connection.hostname’);

Данный вариант вывода будет эквивалентен следующему:

Вызов файла конфигурации с использованием метода get(). Листинг 9.5

$config= Kohana::$config->load(‘database’)->get(‘default’);

$hostname= $config[‘connection’][‘hostname’];

Очевидно, что вызов значений через точки (без использования метода get()) является более компактным, но при этом и намного медленнее, чем вызов get(). Вызов значений без get() может быть полезным тогда, когда выводится только одна конкретная переменная.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]