суббота, 29 сентября 2012 г.

Об одной особенности include


Сегодня я вам расскажу об одной интересной особенности include, которая может вам пригодиться.


Как вы знаете, функции имеют возможность возвращать значение:
<?php
function ololo(){
return true;
}
?>
При вызове функции мы получим значение true. И да, это азы, которые знают все. Но далеко не все знают, что подобным образом может вести себя функция include.
Например, пусть будет файл conf.php, в котором хранятся настройки скрипта, а внутри него:
<?php
$conf['name']='Akdmeh';
$conf['title']='Гостевая';
?>
Самый простой способ получить настройки - это конечно же просто подключить этот файл, и воспользоваться переменной $conf.
Но этот способ не всегда нам подходит: если будет еще один конфигурационный скрипт, и иметь такую же переменную, то предыдущие переменные могут быть перезаписаны.
Сейчас уже можно вводить пространства имен, тем не менее, в этом не всегда возникает потребность, да и PHP 5.3 до этого времени стоит не на всех серверах.
Поэтому самый простой способ - заставить файл вести себя как функцию.
В итоге, мы модифицируем код до:
<?php
$conf['name']='Akdmeh';
$conf['title']='Гостевая';
return $conf;
?>
А в файле, где нужно получить файл конфигураций, пропишем:
<?php
$guest_conf=include 'file.php';
?>
Если раньше мы получали $conf, которое не могли изменить, то теперь мы переносим вывод из file.php в переменную $guest_conf.
Имейте в виду, что $conf будет существовать, так как не смотря на то, что файл через include ведет себя как функция,  переменные из него не становятся от этого локальными!
Если же return опустить, include возвратит true, если файл подключен, или false, если файла не существует (или нет права на чтение, что редко, но бывает).

А вообще - читайте документацию, там можно найти кучу таких интересных особенностей!:)

Комментариев нет:

Отправить комментарий