if()
{
какой то код
}
elseif()
{
какой то код
}
elseif()
{
какой то код
}
и т.д
Как быстрее скрипт выполнится и не сожрет много памяти?
Код:
Как будет быстрее? если я это "какой то код" оставлю прямо там в блоках или вынесу все эти "какие то коды" в отдельные файлы и в зависимости от переменной $_GET[] буду подключать через require_once()
примерно так:
Код:
if()
{
require_once()
}
elseif()
{
require_once()
}
elseif()
{
require_once()
}
и т.д
{
require_once()
}
elseif()
{
require_once()
}
elseif()
{
require_once()
}
и т.д
Или нет разницы вообще? Просто эти самые "какие то коды" очень объемные.
Кол-во памяти измеряется через memory_get_peak_usage() (вроде эта команда, подбробнее в мане)
ЗЫ: по идее коды не должны быть такие объемные, видно, код у вас не структурирован.
Если пофилосовствовать, то (1) если коды очень объёмные, то их в любом случае записывать все целиком в тело if..else не стоит - это неудобно, а (2) - выполняться они по идее будут медленнее, когда собранны в одном скрипте, чем если разбитые, ибо PHP нужно будет для начала пропарсить больший скрипт.
Последнее становится неактуальным, если на серваке стоит расширение типа XCache, которое избавляет PHP от парсинга одних и тех же скриптов при каждом запросе.
Для решения задачи за практически константное время (читать - время вычисления хэша от стороки в PHP) нужно сделать таблицу функций, ключом в которой станет возможное значение в _GET, а значением - функция обработчик.
З.Ы. Профит от таблицы будет заметен если ключей более ~20.
Код:
if (preg_match('/^[\w\d]+$/', $_GET['var'])) {
require 'handlers/'. $_GET['var'] .'.php';
}
require 'handlers/'. $_GET['var'] .'.php';
}
не думаю, что применение регулярок - хорошее решение. их вообще желательно применять исключительно по прямому назначению - поиск по шаблону.
Первое что пришло в голову - это использовать ХОТЯ-БЫ switch/case:
Код:
switch( $_GET['myvar'] )
{
case 'значение1': код ; break;
case 'значение2': код; break;
//и тд
}
{
case 'значение1': код ; break;
case 'значение2': код; break;
//и тд
}
Однако это тоже не лучший вариант.
Всё зависит от того что именно у вас там в GET-е, и Что вы с этим хотите делать.
Цитата: squirL
не думаю, что применение регулярок - хорошее решение. их вообще желательно применять исключительно по прямому назначению - поиск по шаблону.
Хм, я их использую и для проверок в некоторых местах, обычно в тех, которые выполняются несколько раз на скрипт.
Они относительно медленные, но всё же быстрее каких-то самодельных велосипедов (если нет стандартных функций). Проверка на число - понятно, is_numeric(). А как иначе проверить, например, имя файла при скачивании?
Буду юзать switch и require_once()
а модули просто в отдельную папку вынесу.
Хороший у вас форум, всегда ответы дают =) Спасибо.
Проще говоря, лучше уже писать все в одном файле, чем выносить по разным, т.к. тогда все логически лежит в одном месте. Переедавать имя модуля явно имхо неверно, хотя тут хз от привязки пути модуля к его физ.адресу. Главное, чтобы имя модуля не являлось его именем файла, имхо, так неверно, лучше использовать какие-то алиасы (в рамках CMS).
[COLOR="Silver"]P.S.: Написал бы ещё, да алкоголь вдает.[/COLOR]