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

    +151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    /**
    * Magic method __get()
    * @param string $name The name of the payment options properties
    * @return string
    */
    public function &__get($name)
    { 
    	    if (isset($this->_properties[$name]) && is_scalar($this->_properties[$name]))
    	    {
    	        $property = $this->_properties[$name];
    	    }
    	    else
    	    {
    	        $property = &$this->_properties[$name];
    	    }
    	    
    	    return $property;
    }

    Запостил: dimkich, 28 Августа 2013

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

    • неделя Yii на говнокоде ? и чего ? где лопата ?
      Ответить
      • 1) если в $this->_properties нет ключа $name, то будет warning

        2) круто будет использовать таким образом
        к примеру есть баг "выводится 1 а должно 2"
        Код:
        $o->property = [2];
        $a = $o->property;
        /** 1000 строк кода */
        $a = [1];
        /** 1000 строк кода */
        echo $o->property[0];
        Ответить
        • это что за хуяшка такая [2]; ? Мой пых так не может.
          Ответить
          • Это из 5.4
            сокращение от array(2);
            Ответить
            • А array("test" => "foo", "bar" => "baz") они тоже наконец-то научились сокращать до какого-нибудь [ "test" => "foo", "bar" => "baz" ]? :)

              Не прошло и 18 лет, как пых научился красиво описывать массивы...
              Ответить
              • и чего тут красивого ? array("key"=>"val"); сразу видно чего тут делается а то делают из пышечки не пойми чего. прям лисп какой то получается. Лучше чего бы полезного сделали бы.
                Ответить
                • В питоне с пёрлом всю жизнь массивы скобками объявлялись. Даже в сишке с явой так, и никто не говорил, что это непонятно... Сравните код:
                  $fields = array(
                      array("name" => "id", "options" => array("primary" => true))
                      array("name" => "test", "options" => array())
                  );
                  
                  vs
                  
                  $fields = [
                      ["name" => "id", "options" => ["primary" => true]]
                      ["name" => "test", "options" => []]
                  ];
                  Ну что тут непонятного? Синтаксис абсолютно ни с чем не конфликтует, короче, нагляднее... Чем array то понятнее? Он ведь даже не функция, а какая-то неведомая хуйня не менее специальная конструкция, в аргументах которой разрешили юзать "a" => "b".

                  > Лучше чего бы полезного сделали бы.
                  Выпилили к хуям все опции типа magic_quotes и им подобных ;) Жаль, что этого не случится никогда.

                  P.S. Вам дали возможность красиво описывать всякие декларативные таблички, так нет, надо дальше жрать говно кактус, и утверждать, что array() чем-то понятнее, чем [].
                  Ответить
                  • P.P.S. Ни в одном языке кроме пыхи мне не попадалась такая форма записи массивных литералов как array("foo", "bar")... И когда я писал для своего небольшого проекта на PHP конфигурашку, в которой было довольно много декларативных описаний через массивчики... я плакал кровавыми слезами, глядя на эти array(array(array)))...
                    Ответить
                  • >, и утверждать, что array() чем-то понятнее, чем [].
                    Я с ними согласен. Ничего крамольного в array не вижу.
                    [] - обычный сахар.
                    Ответить
                    • > [] - обычный сахар.
                      for и while это тоже самый обычный сахар, который можно реализовать через if и goto.
                      Ответить
                    • Доо, а теперь напиши структуру из списков и хеш-массивов на пыхе и, скажем, js и сравни.
                      Ответить
                      • в пыхе насколько я знаю нет ни списков, ни хешей, там какая-то неведомая хуета
                        Ответить
                        • Ну этот array и как ассоциативный массив можно юзать, т.к. есть быстрый доступ по ключам. И как список (не связный список, а как в питоне), т.к. порядок она сохраняет, и foreach обходит элементы в том же порядке, как их засунули. Поэтому почему бы и не описать структуру из списков и хеш-массивов? Выше я даже писал пример подобной структуры:
                          $fields = array(
                              array("name" => "id", "options" => array("primary" => true))
                              array("name" => "test", "options" => array())
                          );
                          > неведомая хуета
                          А вот это точное описание пыховского array... там есть 14(?) разных функций для его сортировки.
                          Ответить
                  • $fields = [
                    ["name" => "id", ....
                    подобные конструкции я юзаю в js.
                    там есть еще конструкция {}
                    Иногда случаются косяки с тем что путаются скобки.
                    В пыхе сделали array наверное для того, что бы в случае большой вложенности юзали классы. Лично я как не юзал $array= [x]; так и не буду.
                    Ответить
                    • > в случае большой вложенности юзали классы
                      В пыхе еще и в инициализаторах статик массива нельзя юзать ни new ни функции, если мне не изменяет память :(
                      Ответить
                • >>>прям лисп какой то получается
                  Не лисп, а кресты. Эти упрощения - дорога в ад.
                  #12488

                  >Лучше чего бы полезного сделали бы.
                  Точно.
                  Ответить
                  • > #12488
                    Ну в крестах там пиздец какой-то замутили. С одной стороны, имхо, ввели полезную фишку - сам initializer list, по которому можно бегать итератором. И есть бесполезная херня в виде замены Some a({1,2,3}) на Some a{1,2,3}.
                    Ответить
                    • Не, универсальная инициализация - норм, жаль только, что её не сразу ввели в плюсы, а теперь стало ещё больше способов инициализации, и старые способы никогда не будут выпилены.
                      меня всегда бесил "баг"
                      my_type lol_you(); // It's a function, dude!
                      my_type lol_me(1); // it' an object contruction, dude!
                      зато теперь
                      my_type lol_you{}; // okay...
                      my_type lol_me{1}; // okay...
                      Ответить
                  • Ну кресты в отличии от джавы бездарям типа тебя не освоить
                    Ответить
      • Рядовой Лопата по Вашему приказанию прибыл!
        Ответить
        • Блины принес?
          Ответить
          • Так точно!
            Ответить
            • И где же?
              Ответить
              • А Вам не досталось?
                Ответить
              • А. П. Чехов "Письмо к учёному соседу"
                Село Блины-Съедены

                Дорогой Соседушка.
                Максим... (забыл как по батюшке, извените великодушно!) Извените и простите меня старого старикашку и нелепую душу человеческую за то, что осмеливаюсь Вас беспокоить своим жалким письменным лепетом.

                Ответить

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