Ну опять же. RFC в виде требования (то есть SHOULD) пишет:
SHOULD — это не требование, а рекомендация:
SHOULD
This word, or the adjective «RECOMMENDED», mean that there
may exist valid reasons in particular circumstances to ignore a
particular item, but the full implications must be understood and
carefully weighed before choosing a different course.
согласно принятым соглашениям в RFC (http://www.faqs.org/rfcs/rfc2119.html)
Для получения значения. Как из вашего енум-контейнера получить конкретное текущее значение? только через __toString, что равнозначно приведению к строке. Вот пример, в данном случае имеем числовой контекст (потому что значения констант — не строки):
class Enum_Colors extends Enum {
const RED = 0xFF0000;
const GREEN = 0x00FF00;
const BLUE = 0x0000FF;
}
function something(Enum_Colors $color)
{
switch ((string)$color) {
case Enum_Colors::RED:
echo 'red';
break;
case Enum_Colors::BLUE:
echo 'blue';
break;
case Enum_Colors::GREEN:
echo 'green';
break;
default:
echo 'unknown color';
break;
}
}
something(new Enum_Colors('RED'));
Без принудительного приведения в switch() получаем кучу ругани и 'unknown color'. С принудительным приведением в switch и __toString (это еще один момент, php запрещает возвращать из __toString не-строки) — ожидаемый результат.
То есть тикет является локальным интерфейсом к некоторому удаленному (хранящемуся в кеше) значению? Похоже одновременно на смарт-пойнтер из c++ и stub из некоторых реализаций rpc. Надо будет подумать над подобным вариантом =)
честно говоря, мне
куда как понятнее.
Неудивительно — они не компилируются:
SHOULD — это не требование, а рекомендация:
согласно принятым соглашениям в RFC (http://www.faqs.org/rfcs/rfc2119.html)
Вообще говоря, это классика туториалов по PHP. Сложно найти туториал (использующий базу), в котором бы эта конструкция не использовалась.
Без принудительного приведения в switch() получаем кучу ругани и 'unknown color'. С принудительным приведением в switch и __toString (это еще один момент, php запрещает возвращать из __toString не-строки) — ожидаемый результат.
… и только в том случае, когда у такого сознательного человека есть время на изучение. В условиях реальных задач времени зачастую не остается.
Ум и этика это немножко разные вещи, вы зря их путаете.
Но если для замены регекспа нужно написать 5+ строк — используйте все-таки регексп.
Если важна скорость — не верьте советам, верьте профайлеру.
Еще — «и его претензий»