Задать вопрос
@pmvpro

Как передать параметры из одного свойства-объекта в другое свойство-объект?

Есть объект у которого два свойства - объекты.
Можно ли получить доступ из одного свойства-объекта к другому свойству объекту. Например, в setPage() нужно получить данные из объекта-свойства $site->db;
<?php
 class page{
    public $path;
    public $code;
    function setPath($path){
        /*Здесь нужно получить доступ к методу getName объекта $site->db */
        $this->path=$path;    
    }
    function getPath(){
        $ret=$this->path;
        return $ret;    
    }
 }
 class db{
    public $name;
    function setName($name){
        $this->name=$name;
    }
    function getName(){
        return $this->name;
    }
 }
 class site {
    public $server;
    public $db;
    public $page;
    function dbInit(){
        $this->db= new db();
        $this->db->setName('local');
    }
    function getPage(){
        $this->page=new page();        
        $this->page->setPath('user/profile');
        echo $this->page->getPath();
    }
 }
 $site=new site();
 $site->dbInit();
 $site->getPage();

Пока единственное решение, передать параметром. Ну соответственно, дописать конструктор и т.п.
$this->page=new page($this->$db);
Но если таких свойств-объектов несколько, то что только так? Передавать все объекты в ручную? Неужели ни как по другому?
  • Вопрос задан
  • 265 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Не очень понятно, чем это отличается от ситуации, когда объекты не являются свойствами одного класса. На мой взгляд - ничем не отличается. Так что да - передвать все объекты "вручную". Старый добрый dependency injection

А если несклько таких свойств-объектов, то, возможно, пересмотреть структуру классов или то как они создаются. Задействовать фабрику или контейнер
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽