Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5: Новые возможности.

  Все выпуски  

ВВЕДЕНИЕ В ZEND FRAMEWORK: Конфигурация приложения


PHP 5: Новые возможности.

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

Класс Zend_Config предназначен для облегчения работы с конфигурационными данными для веб приложений. Этот класс предлагает объектно-ориентированный пользовательский интерфейс для чтения иерархически организованных данных. Поддерживаются несколько различных форматов хранения данных, а именно: PHP массив, .ini файл и формат XML.

Данные представлены в виде многомерного ассоциативного массива. Они либо передаются конфигурационному объекту в готовом виде (см. «Класс Zend_Config»), либо предварительно автоматически преобразуются к такому массиву (см. «Класс Zend_Config_Ini» и «Класс Zend_Config_Xml»). Для более удобного доступа к данным поддерживаются интерфейсы Countable и Iterator - отсюда возможность применять к конфигурационным объектам функцию count() и контрольную структуру foreach.

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

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

Класс Zend_Config_Ini позволяет считывать данные из .ini файлов. При этом используется стандартная функция PHP parse_ini_file(), поэтому файл должен следовать принятым для этой функции соглашениям.

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

Пример 9.2. Использование класса Zend_Config_Ini


; config.ini

[fooSection]
foo = Foo

[barSection : fooSection] 1
bar = Bar
bar.blah = Blah 2
            

1

Наследование. Секция barSection наследует параметры, объявленные в секции fooSection.

Сепаратор. Результатом его действия является образование дополнительного уровня в массиве конфигурационных данных.

<?php

$config = new Zend_Config_Ini('config.ini', 'barSection'); 1

echo $config->foo, $config->bar, $config->bar->blah;
            

Первый параметр, передаваемый в конструктор, задает путь и название файла с конфигурационными данными; второй - название секции, которая будет загружена.

FooBarBlah

  1. Что будет выведено на экран (предполагается, что файл config.ini находится в одной директории с рабочим скриптом)?

    
    ; config.ini
    
    [foo]
    bar = BAR
                    
    <?php
    
    define('BAR', 'Bar');
    
    $config = new Zend_Config_Ini('config.ini', 'foo');
    
    print $config->bar;
                    
    [Подсказка]Подсказка

    Воспользуйтесь описанием функции parse_ini_file() в документации [2][3].

  2. Измените конфигурационный файл таким образом, чтобы секция two наследовала данные секции one.

    
    <?xml version="1.0"?>
    <config>
        <one>
            <first>1</first>
        </one>
        <two>
    
            <second>2</second>
        </two>
    </config>
                    

«Ответы и решения к Глава 9, Конфигурация приложения»

Created with DocBook


В избранное