Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> if else if или case: break; ? что луше 
V
    Опции темы
Master_
Дата 13.8.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Код

<?php
require_once('init.php');
//Верхняя часть
ob_start("ob_gzhandler");
require_once('templates/header.php');

if ( isset($_GET['n']) )
{
    require_once('pages.php');
}
else if ( isset($_GET['id']) )
{
    require_once('fullnews.php');
}
else
{
    require_once('news.php');
}
//Нижняя часть
require_once('templates/right.php');
require_once('templates/footer.php');
ob_end_flush();
?>

Сейчас есть такой код.

Подумываю переделать elseif на case но стоит ли оно того?

Что бы вы сделали на моем месте для оптимизации?

Это сообщение отредактировал(а) Master_ - 13.8.2007, 12:18
PM   Вверх
Severyanin
Дата 13.8.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



А как ты хочешь заменить такие разные условия case? По-моему, это невозможно. И есть ли смысл оптимизировать иакой простой код?


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 13.8.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Однозначно использование switch, внутри которого - include. _once лучше не использовать.
PM ICQ   Вверх
Master_
Дата 13.8.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Можно пример? smile

Добавлено через 13 секунд
Да, и почему once не использовать?

Добавлено через 2 минуты и 18 секунд
Навернео потому что _once проверяет по всему доку, не был ли вставлен этот файл?
PM   Вверх
Mal Hack
Дата 13.8.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



http://php.net/switch

_once не надо использовать, т.к. по теории вы должны так построить свой скрипт, чтобы он два раза один и тот же файл не подключал.
Отсюда надобность проверки на "подключенность" файла, которая к тому же кушает процессорное время, не нужна.

Да, есть ряд задач, где это это может быть необходимо, но это совсем другой уровень, да и через get_included_files (вроде так) сделать, думаю, будет проще и быстрее.
PM ICQ   Вверх
Master_
Дата 13.8.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Зачем мне ссылка на свитч кейс? Я это и так знаю, я хотел немного кода-примера smile

А что насчет вставки страниц через readfile()?
Например футер у меня без пхп кода, будет ли readfile быстрее include?
PM   Вверх
Mal Hack
Дата 13.8.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Master_ @  13.8.2007,  13:48 Найти цитируемый пост)
Зачем мне ссылка на свитч кейс? Я это и так знаю, я хотел немного кода-примера smile

Вот там и есть примеры. А код за Вам, из-за уважения к Вам писать не буду... Программист сам должен все делать ;)

Цитата(Master_ @  13.8.2007,  13:48 Найти цитируемый пост)
А что насчет вставки страниц через readfile()?
Например футер у меня без пхп кода, будет ли readfile быстрее include? 

Использование include в данном случае является грубейшей ошибкой.
PM ICQ   Вверх
Master_
Дата 13.8.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Цитата(Mal Hack @  13.8.2007,  14:46 Найти цитируемый пост)
Использование include в данном случае является грубейшей ошибкой. 

Ну так заменой я понимаю readfile() будет правильным вариантом?
Или можно еще как-нибудь получше? smile
PM   Вверх
Mal Hack
Дата 13.8.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Да, это будет правильным вариантом.
PM ICQ   Вверх
Golda
Дата 13.8.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Цитата(Severyanin @  13.8.2007,  12:42 Найти цитируемый пост)
А как ты хочешь заменить такие разные условия case? По-моему, это невозможно


Все возможно.

Код

switch (true) {
 case isset($_GET['n']):
      require_once('pages.php');
      break;
  case isset($_GET['id']):
      require_once('fullnews.php');
      break;
  default:
    require_once('news.php');
}


Смысла, правда, я в этом не вижу. Но меня заинтересовала принципиальная позиция

Цитата(Mal Hack @  13.8.2007,  13:21 Найти цитируемый пост)
Однозначно использование switch, внутри которого - include. _once лучше не использовать.


Mal Hack, имелось в виду для данного конкретного случая или вообще? Если вообще, то почему? Оставим за скобками вопрос о once.



Это сообщение отредактировал(а) Golda - 13.8.2007, 19:59


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Mal Hack
Дата 13.8.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Golda, ваш пример, если и перетранслируется без ошибок в машинный код, то выполняться не будет... case требует КОНСТАНТЫ, так во всех языках, а у вас - динамическое значение (функция).

Цитата(Golda @  13.8.2007,  19:18 Найти цитируемый пост)
Mal Hack, имелось в виду для данного конкретного случая или вообще? 

Для данного случая, конечно.
PM ICQ   Вверх
Golda
Дата 14.8.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Цитата(Mal Hack @  13.8.2007,  22:31 Найти цитируемый пост)

Для данного случая, конечно. 


А, ok.

а код рабочий. Можете запустить и проверить



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Master_
Дата 14.8.2007, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Код то рабочий но смысла менять его на такой думаю нет.
Оставил else if.
PM   Вверх
Severyanin
Дата 14.8.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Цитата

а код рабочий. Можете запустить и проверить

В ряд ли он корректно будет работать. И метод странный. Чем он лучше If-then в данном случае?


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 14.8.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Golda @  14.8.2007,  09:19 Найти цитируемый пост)
а код рабочий. Можете запустить и проверить

Я даже запускать не хочу, т.к. он противоречит принципам кэйса.

Цитата(Severyanin @  14.8.2007,  10:10 Найти цитируемый пост)
Чем он лучше If-then в данном случае? 

switch лучше  if'a тем, что на машинном уровне меньше программных связей должно устаналиваться. Зависит от задачи, конечно.
PM ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0858 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.