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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обычные константы и константы классов 
:(
    Опции темы
evilsoul
Дата 3.11.2011, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть следующий кусочек кода с 3 switch
в case для сравнения используются константы, но как мне кажется ожидаемое поведение происходит только в одно случае, когда мы используем обычные константы, в случае использования констант класса, результат мне показался несколько неожиданным. На сайте php.net нашел аналогичный вопрос разработчикам, там сказали что это не баг, а фича, и отправили человека курить мануал (У него был пример как у меня в первом случае).

Я написал эти три теста и увидел что с константами класса и и обычными константами switch Отрабатывает по разному, может кто сможет объяснить в чем между ними разница, поиск в интернете мне ответов не дал.

Код

const const1 = 1;
const const2 = 2;

class Test {

    const const1 = 1;
    const const2 = 1;
    
    static public function switch_test($value) {
        switch($value) {
            case self::const1:
                echo "self::const1";
                break;
            case self::const2:
                echo "self::const2";
                break;        
        };
    } 

}
$res = Test::const2;
Test::switch_test($res);   //Выведет self::const1 Хотя логичнее по-мойму self::const2

$res = const2;
switch ($res) {
    case const1:
        echo "const1";
        break;
    case const2:
        echo "const2";
        break;
};
 //Выведет const2 все нормально

$res = Test::const2;
switch ($res) {
    case Test::const1:
        echo "Test::conts1";
        break;
    case Test::const2:
        echo "Test::conts2";
        break;
};
//Выведет Test::conts1 Хотя логичнее по-мойму Test::conts2

PM MAIL   Вверх
Shogun
Дата 3.11.2011, 22:32 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

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



const const1 = 1;
const const2 = 1;
?? 

Вы значения одинаковые установили, конечно он покажет то что первое найдет, в данном случае const1...

Это сообщение отредактировал(а) Shogun - 3.11.2011, 22:34


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
nikolaymns
Дата 3.11.2011, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, и правдо не по глазам было, надо уже идти спать. 
(Это я создал, тему. просто неудачно изменил email в результате чего дизактивировал свой аккаунт, пришлось завести новый)

Добавлено через 9 минут и 35 секунд
Так нашел сразу ошибку в коде, который заставил провести меня исследования. Там правда константы разные были и ошибка была не в этом.
Все говорит о том что надо идти спать, спасибо еще раз.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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