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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    foreach ($cart = LaraCart::getItems() as $product) {         
        $product->id;      
           $product->name;      
           $product->title_slug;       
          $product->price;         
        $product->qty;      
           $product->photo;     
            $product->item_type;  
           }

    А не прогнать бы нам просто данные ммм?

    Запостил: ARTWIN_PRO, 26 Ноября 2019

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

    • Может там чего на геттерах намутили?

      Но всё равно говно. И форматированние странное.
      Ответить
      • Намутил на геттерах, проверь:
        <?php
        
        class Pituh {
            public function __get($name) {
                echo "Called " . $name . PHP_EOL;
            }
        }
        
        class LaraCart {
            static public function getItems() {
                return [new Pituh()];
            }
        }


        https://ideone.com/G47qWx
        Ответить
        • Класса питух не существует.
          Есть класс «Птицы»: https://ru.wikipedia.org/wiki/Курица

          Домен:  Эукариоты
          Царство: Животные
          Тип: Хордовые
          Класс: Птицы
          Отряд: Курообразные
          Ответить
    • Верификация данных. Что не ясно?
      Ответить
      • Типа если какого-то поля нет, то исключение вылетит?
        Ответить
        • В "PHP"???
          Ответить
          • <?php
            
            class Bird {
                public $wings;
                public $beaks;
            }
            
            $pituh = new Bird();
            $pituh->teeth;

            https://ideone.com/mNpIb2

            Прилетает нотис:
            PHP Notice:  Undefined property: Bird::$teeth in /home/mCjxE0/prog.php on line 9

            Да, собачкой он затыкается: https://ideone.com/bB2kIx
            Ответить
            • Переведи на OCaml.
              Мы не обязаны знать язык для веб-дизайнеров
              Ответить
              • type bird = {
                	wings: int;
                	beak: int;
                }
                
                let pituh = {wings = 2; beak = 1;};;
                print_int pituh.teeth;

                Выхлоп компилятора:
                File "prog.ml", line 7, characters 16-21:
                Error: This expression has type bird
                       The field teeth does not belong to type bird


                https://ideone.com/LIo8Xc
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Чтобы я тоже смог ощутить красоту, переведи на "PHP".
                    Ответить
                  • Ты обратил внимание, что я нигде не указывал, что pituh имеет тип bird? Компилятор сам догадался, сопоставив поля питуха и типа bird.
                    Ответить
                    • Разумеется, Хиндли Милнер же.
                      Одна из фишек, от которой я теку.
                      А еще от паттерн матчинга
                      Ответить
                      • Это какой-то автовывод типов наоборот. Компилятор не вывел какой-то составной тип, он подобрал имя уже существующего типа, который максимально соответствует описанию.

                        Вот «C++» так не умеет. В «C++» нужно, чтобы в правой части имя типа уже присутствовало (я где-то в выражении должен проговориться, что имею дело с типом bird).

                        «OCaml» же не ждёт подсказки, а догадывается сам. Значит, он структуры, рождённые в разных местах, может свести к одному типу, если у них список полей совпадёт.

                        Вот в «Паскале» наоборот: я не могу написать A:=B, если A и B — это массивы или записи, описанные в разных местах, даже если у них типы элементов/полей совпадают.
                        Ответить
    • Определённо что-то в геттерах. Идиотский подход.
      Ответить

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