Вместо того, чтобы загрязнять глобальное пространство имен бесполезными переменными, вы можете определить статические члены функций, которые сохраняются за рамками функции, но существуют только в пределах функции:
function myFunction($param)
{
static $count;
if (empty($count)) $count = 0;
$count++;
//rest of your function
}
К сожалению, я не могу найти, где эта функциональность документирована в документации php.
Нашел его: переменная область действия
Я не могу получить доступ к переменным, определенным вне самой функции
Я пропустил эту строку.
Если вы находитесь в парадигме ООП, используйте объект для хранения счетчика. Иначе, глобальные переменные - это путь, но не напрямую. Если вы кодируете в скриптовой парадигме и используете последнюю версию PHP, используйте пространства имен , чтобы избежать загрязнения глобальных переменных корневого пространства имен.
Если вы не можете использовать пространства имен, используйте псевдо-пространства имен для всего . Вместо function someFunction
используйте function projectName_someFunction
или какую-либо их комбинацию. Таким образом, вы можете комбинировать несколько проектов, не беспокоясь об использовании неправильной функции. Таким же образом все глобальные переменные могут быть сохранены как $projectName_someVar
.
Существуют другие методы для псевдо-именования имен ваших функций / переменных.
Причина, по которой не использует глобальные переменные, заключается в том, что глобальная переменная с общим именем может быть легко перезаписана и может быть неоднозначной: что $count
на самом деле считает в глобальное пространство имен?