@Ruplex

Как унаследовать значение свойства класса, которое было установлено в объекте (язык PHP)?

В связи с моей неопытностью и, возможно даже глупостью, у меня не получается найти решение данной проблемы.

Проблема заключается в том, что создав объект класса и впоследствии поработав с ним, мне нужно унаследовать те значения свойств, которые устанавливались за пределами класса (в объекте). Но обратившись к дочернему классу, который наследует свойства и методы, у меня не получается унаследовать изменённое свойство родительского класса.

В общем, вот пример кода:

class test {
		
	protected $name = 'Test';
		
	function setName($arg){
			
		$this->name = $arg;
			
	}
		
}
	
class test2 extends test {
		
	function getName(){
			
		return $this->name;
			
	}
		
}

$obj = new test;
	
$obj->setName('Test2'); // Устанавливаем значение;
	
$obj = new test2;
	
exit($obj->getName()); // Пытаемся получить установленное значение.


Мне нужно получить установленное значение (Test2) свойства родительского класса.

Объясните пожалуйста, мне, глупцу, что именно я упускаю и как можно решить данную проблему.
  • Вопрос задан
  • 2462 просмотра
Решения вопроса 1
mzcoding
@mzcoding
Web-Разработка
Создайте конструктор и передавайте или статику используйте.
<?php
class test {
  protected $name = 'Test';
  

  
  function setName($arg){
      
    $this->name = $arg;
      
  }
  function getName(){
  	return $this->name;
  }
    
}
  
class test2 extends test {
  public function __construct($name == null){
  	if($name !== null) $this->name = $name;
  }  
  function getName(){
      
    return $this->name;
      
  }
    
}

$obj = new test();
  
$obj->setName('Test2'); // Устанавливаем значение;
  
$obj = new test2($obj->getName());

exit($obj->getName()); // Пытаемся получить установленное значение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
index0h
@index0h
PHP, Golang. https://github.com/index0h
Вы путаете объекты и классы, это принципиально разные вещи.
То, что вы хотите можно сделать с помощью статических свойств.
Ответ написан
Комментировать
KorsaR-ZN
@KorsaR-ZN
Ни как... Грубо говоря, наследование решается еще до исполнения вашего когда, так что не как Вам не унаследовать свойства объекта определенные на этапе исполнения кода
Ответ написан
Комментировать
redfieldone
@redfieldone
Старый , лысый и без денег.
parent::()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы