Comments 24
hhvm+hacklang вам в руки :)
>>Проблема заключалась в следующем. Необходимо реализовать функцию
>>Решение проблемы состоит в том, чтобы реализовать абстрактный класс
Лично мне кажется, что тут какая-то надуманная проблема и излишне усложненное ее решение, которое может сломать мозг многим.
>>Решение проблемы состоит в том, чтобы реализовать абстрактный класс
Лично мне кажется, что тут какая-то надуманная проблема и излишне усложненное ее решение, которое может сломать мозг многим.
Чуть не сломал пока пытался понять что могло натолкнуть на описанное в статье решение
Наталкивает все одно и то же — статический анализ, строгая типизация, все это позволяет существенно уменьшить число ошибок.
Но приведенная реализация какая-то странная. Если уж так хочется типизировать перечисления, явно нагляднее писать:
И собственно, это уже реализовано SplEnum.
Но приведенная реализация какая-то странная. Если уж так хочется типизировать перечисления, явно нагляднее писать:
test( new Data(Data::ID) );
И собственно, это уже реализовано SplEnum.
>>Наталкивает все одно и то же — статический анализ, строгая типизация, все это позволяет существенно уменьшить число ошибок.
Наврятли автора натолкнуло это. Обратите внимание — он определенную проблему решает «Необходимо реализовать функцию», т.е. не проблему где нужно придумать определенную структуру данных и абстракции для описания определенных бизнес процессов, а именно «реализовать функцию». Скорее всего он в php пришел недавно, у него есть в голове определенные патерны решения проблем — тут он ищет что-то похожее, если не находит дописывает сам. И как раз этим он тут делится. Но его подход как раз количество вероятных ошибок в данном случае совсем не уменьшает, а наоборот.
Наврятли автора натолкнуло это. Обратите внимание — он определенную проблему решает «Необходимо реализовать функцию», т.е. не проблему где нужно придумать определенную структуру данных и абстракции для описания определенных бизнес процессов, а именно «реализовать функцию». Скорее всего он в php пришел недавно, у него есть в голове определенные патерны решения проблем — тут он ищет что-то похожее, если не находит дописывает сам. И как раз этим он тут делится. Но его подход как раз количество вероятных ошибок в данном случае совсем не уменьшает, а наоборот.
Может вы конечно говорите про другую статью, но в этой статье автор определенно решает проблему типизации о чем и пишет неоднократно.
Вполне логично, для примера использования типизированного перечисления использовать функцию (собственно, это и будет основным способом использования).
Иногда в коде приходится использовать строго типизированные параметры, однако сам язык PHP не является строго типизированным (как, например, C#, в котором присутствует такой тип данных, как перечисления – Enum).
Необходимо реализовать функцию, которая бы на вход принимала строго типизированный объект (класс),
Вполне логично, для примера использования типизированного перечисления использовать функцию (собственно, это и будет основным способом использования).
SplEnum версия всего лишь 0.1.0, а так же ставится оно из PECL.
Нет никакой уверености в поддержке этого дополнения.
Так что использовать в продакшене я бы не стал.
Нет никакой уверености в поддержке этого дополнения.
Так что использовать в продакшене я бы не стал.
Вообще-то такие вещи лучше наследованием реализовывать. Data_ID extends Data и Data_String extends Data. И в каждом определить метод get_type().
Либо я туго вечером соображаю, либо… Чем вам не угодили стандартные is_int и is_string?
Вы изобрели php.net/SplEnum, я правильно понимаю?
И, да,
> Лично мне кажется, что тут какая-то надуманная проблема
И, да,
> Лично мне кажется, что тут какая-то надуманная проблема
Вот что бывает, когда «программисты» не читают документацию по языку, который используют.
Ждем решения для реализации стека, очереди и строк-объектов.
P.S. Ну и конечно же, как в любом уважающем себя фреймворке, свой stdClass
Ждем решения для реализации стека, очереди и строк-объектов.
P.S. Ну и конечно же, как в любом уважающем себя фреймворке, свой stdClass
Это не часть языка, а его расширение. Для кого-нибудь это может быть проблемой.
Не расширение а стандартная библиотека. Она есть всегда.
И документация по ней объединена с документацией по языку. Как можно было пропустить — для меня загадка.
И документация по ней объединена с документацией по языку. Как можно было пропустить — для меня загадка.
Это расширение.
Не всегда есть возможность устанавливать расширения — например на shared хостинге. Хотя согласен — реализация странная.
PHP Manual > Function Reference > Other Basic Extensions > SPL Typeshttp://ru2.php.net/manual/en/class.splenum.php
Не всегда есть возможность устанавливать расширения — например на shared хостинге. Хотя согласен — реализация странная.
Только сейчас заметил, кстати.
А зачем в этом классе реализован синглтон? Да еще и криво реализован, через self?
А зачем в этом классе реализован синглтон? Да еще и криво реализован, через self?
Подобное с хабра: habrahabr.ru/post/38584/
Мне кажется лучше уже было бы вместо
Вызывать явно
Так интуитивно понятнее.
switch ((string)$data) {
Вызывать явно
switch ($data->toString()) {
Так интуитивно понятнее.
Sign up to leave a comment.
Реализация перечислений (Enum) в PHP с проверкой типа