Ответы пользователя по тегу ООП
  • Как правильно наследовать и соединить классы?

    AK-VoronM
    @AK-VoronM
    "Мало-мало программист"
    У вас Invoice должен зависеть от объектов User и Organisation. Соответственно внутри Invoice вы работаете с параметрами переданных объектов.
    $uid = $this->User->getId();
        $oid = $this->Organisation->getId();

    Их нужно передать в конструкторе или отдельными методами. Код без комментов, ну уж очень не удобный тут редактор.
    class Invoice
    {
        protected $User;
        protected $Organisation;
    
        public function __construct(User $User = null, Organisation $Organisation = null)
        {
            if (!is_null($User)) {
                $this->setUser($User);
            }
            if (!is_null($Organisation)) {
                $this->setOrganisation($Organisation);
            }
        }
        public function setUser(User $User)
        {
            $this->User = $User;
        }
        public function setOrganisation(Organisation $Organisation)
        {
            $this->Organisation = $Organisation;
        }
    }

    Такой подход поможет вам получать дополнительные поля объектов User и Organisation и не переживать, что вы поменяете таблицу.
    Ответ написан
    7 комментариев
  • Как из конструктора класса вернуть массив?

    AK-VoronM
    @AK-VoronM
    "Мало-мало программист"
    Не смог пройти мимо. Жесть же, коллеги )))

    Если очень хочется классов и получать данные одним вызовом используйте статические методы.

    class MyClass
    {
        //Публичный метод для получения данных
        public static function getSomeData()
        {
            $result = self::someAction();
            
            return $result;
        }
        
        //Скрытый служебный метод
        protected static function someAction($data = null)
        {
            //Тут что-то делаем
            return $result;
        }
    }
    
    $result = MyClass::getSomeData(); //Так получаем данные. Без фанатизма с конструктором.


    Не надо жести, потомки вас не простят ))))

    Рекомендую почитать на досуге: клац (без рефки).
    Ответ написан
    Комментировать