Профессиональное программирование на PHP

Страница 32 из 591


34 Глава 1 Стили кодирования

димыми внутри функции, их необходимо объявлять с помощью ключевого слова global. Такое ограничение видимости переменных за пределами блока, где они были объявлены, называется "правилом области видимости". Область видимости (scope) переменной представляет собой блок кода, где данная переменная доступна без использования специальных мероприятий (которые называются "помещение в область видимости"). Несмотря на простоту и изящность, такие правила делают соглашения об именовании, которые основываются на том, является ли переменная глобальной, довольно неэффективными. PHP-переменные можно разделить на три категории, которые соответствуют различным правилам именования:

 действительно глобальные — переменные, к которым программист намерен обращаться в глобальной области;

 долговременные — эти переменные могут существовать в любой области, но содержат важную информацию или к ним обращаются большие блоки кода;

ш временные — переменные, которые используются в небольших разделах кода и содержат временную информацию.

Константы и глобальные переменные

Имена глобальных переменных и констант следует вводить в верхнем регистре. Это позволяет легко идентифицировать их как глобальные переменные, см. пример ниже:

$САСНЕ_РАТН = 1/var/cache/■;

function list cache () {

global $CACHE_PATH;

$dir = opendir($CACHE_PATH);

while(($file = readdir($dir)) !== false && is_file($file)) { $retval [] =" $file;

}

closedir($dir); return $retval;

}

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

Использование глобальных переменных является большой ошибкой в РНР. Как правило, глобальные переменные плохи по двум описанным ниже причинам.

ш Глобальные переменные могут изменяться в любом месте программы, усложняя поиск ошибок.

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

Часто решением данной проблемы является функция доступа.




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006