Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - а насколько плохи статические переменные? / 8 сообщений из 8, страница 1 из 1
25.11.2015, 19:26
    #39113520
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
Допустим я выношу какие-то конфигурационные параметры в cfg-файл, а в скриптах использую их с помощью функции parse_ini_file.
В скрипте эти конфигурационные параметры могут использоваться в нескольких местах, в том числе и в подключаемых файлах (модулях или классах).
Как лучше сделать?
1. Каждый раз использовать parse_ini_file.
2. Один раз сохранить результаты parse_ini_file в глобальной переменной.
3. Для чтения конфигурационных параметров использовать процедуру со статической переменной внутри.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function _cfg($scope, $sections=false)
{
	static $config = array();
	global $_BASE;
	if (!array_key_exists($scope, $config))
	{
		if (empty($_BASE)) return;
		if (file_exists("$_BASE/cfg/$scope.ini"))
		{
			$data = parse_ini_file("$_BASE/cfg/$scope.ini", $sections);
			if ($data !== false)
			{
				$config[$scope] = $data;
			}
		}
	}
	return $config[$scope];
}


4. Конфигурационные параметры перенести из cfg-файла в константы в теле модуля/класса.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
25.11.2015, 22:39
    #39113628
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
я бы посмотрел в сторону Registry
...
Рейтинг: 0 / 0
25.11.2015, 23:01
    #39113632
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
Ну по сути это вариант 3, только не в виде процедуры, а в виде класса.
...
Рейтинг: 0 / 0
25.11.2015, 23:06
    #39113634
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
ну это по "православному" как то. Я делал класс конфига (правда использовал json, а не ini), и дергал его через DI
...
Рейтинг: 0 / 0
26.11.2015, 00:03
    #39113646
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
Вообщем я так понял, что static-переменные это в принципе нормально?
Откуда-то в памяти отложилось, что их желательно не использовать без крайней необходимости, что это чуть ли не goto.
Видимо с каким-то другим языком спутал.
...
Рейтинг: 0 / 0
26.11.2015, 05:42
    #39113695
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
Alibek B.,

они становятся злом при многопоточности. так как пхп это из коробки не умеет. потому здесь это допустимо. а в других языках - зло
...
Рейтинг: 0 / 0
26.11.2015, 09:39
    #39113757
dvim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
Alibek B.,
Для хранения практически константых значений никаких проблем нет. И усложнения излишни.
(Даже в многопоточном варианте)

Если переменные используются для хранения меняющихся значений - это уже не лучшая практика.
...
Рейтинг: 0 / 0
26.11.2015, 10:16
    #39113780
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - а насколько плохи статические переменные?
dvim,
Любая конструкция языка для чего-то нужна. Статические переменные-нужны для хранения информации для всего класса . Все зависит от задачи. Если у вас объекты класса используют один счетчик например, то ему самое место в статической переменной класса.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - а насколько плохи статические переменные? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]