1. PHP / Говнокод #12659

    +146

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    class Step {
      public function xxx($arg1, $arg2 = NULL) {
    
      };
    }
    
    class FirstStep extends Step {
      public function xxx($arg3, $arg1 = NULL, $arg2 = NULL) {
    
      };
    }

    В очередной раз подтверждает что пхп - гамно!
    А автору кода вообще линейкой по пальцам, куда, как, зачем менять сигнатуру да и еще не правильно!!!
    И это в проэкте каторый стоит 15000Евро

    Запостил: v_anonym, 27 Февраля 2013

    Комментарии (12) RSS

    • Это не PHP говно, а принцип "Duck Typing". Он во многих языках с динамической типизацией встречается, например в Python то же самое:
      >>> class A:
      ...     def f(self, a1, a2 = None):
      ...         print a1, a2
      ... 
      >>> class B:
      ...     def f(self, a1, a2 = None, a3 = None):
      ...         print a1, a2, a3
      ... 
      >>> 
      >>> b = B()
      >>> b.f(1, 2)
      1 2 None
      Ответить
    • class NextStep extends FirstStep
      Ответить
    • Автор по ходу сам тупит, ну изменил он базовый метод родительского класса для целей знакомых только ему, вопрос и че??? в чем гомно
      Ответить
    • А вот так? Это в 5.4. В 5.3 все тихо в обоих случаях.
      abstract class Foo {
      	abstract public function __construct();
      }
      class Bar extends Foo {
      	public function __construct($arg){} //Fatal error, но если убрать $arg, то интерпритатор считает что все нормально
      }
      class ololo extends Bar{
      	public function __construct($arg){}
      }

      Логика?
      Ответить
    • Сам недавно наступил на эти грабли. Существует уровень ошибок E_STRICT который ниже E_NOTICE и он и бросает ошибку. В 5.4 его включили в E_NOTICE, а в 5.3 нет. По поводу того , что php и логика это несовместимые вещи, ты вообще сам на чем пишешь? Везде все красиво кроме php или как?
      Ответить

    Добавить комментарий