Получить свойства & quot; родительского создания & quot; объект

У меня есть объект, который я просто знаю имя класса, скажем, «А». Я пытаюсь изменить свойства этого объекта. К сожалению, я пытаюсь получить к ним доступ из другого экземпляра объекта, созданного первым объектом, полностью другой класс (ни расширенный, ни связанный). Упрощенный код ниже, чтобы объяснить ситуацию.

Class A {

public $var; //some important stuff

function createObjectB() {
$b = new B();
}
}

Class B {
// a totally different class not related with A
}

Это сторонний код компонента в CMS, поэтому я не могу связываться с основным кодом (или, по крайней мере, я так думаю?), Пытающимся передать свойство вместе с созданным объектом B, не вызывая ошибок в более позднее время, если этот компонент обновляется.

Я могу получить доступ к объекту из класса B из-за файла «layout-template», позже вызванного в классе B, который не будет затронут, если обновится основной код. Таким образом, я не могу прикоснуться ни к одному из этих классов.

Используя debug_backtrace() от object B Я могу сделать несколько шагов назад по свойствам нужного мне объекта, но я думаю, что довольно странно использовать эту функцию для получения необходимой мне информации, и я думаю, что это довольно интенсивная функция для использования.

Я довольно новичок в PHP, просто неправильно, что я пытаюсь достичь? Есть ли лучший способ?

1

Решение

Наследственность — это устоявшийся принцип программирования, и PHP использует его в моделировании вашего объекта. Этот принцип будет влиять на то, как многие классы и объекты связаны друг с другом.

Например, при расширении класса подкласс наследует все открытые и защищенные методы родительского класса. Если класс не перезаписывает, эти методы сохраняют свою первоначальную функциональность.

Это полезно для определения и абстрагирования функциональности и позволяет реализовать дополнительную функциональность в похожих объектах без необходимости переопределения всей общей функциональности.

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

<?php

class Foo
{
public function printItem($string)
{
echo 'Foo: ' . $string . PHP_EOL;
}

public function printPHP()
{
echo 'PHP is great.' . PHP_EOL;
}
}

class bar extends Foo
{
public function printItem($string)
{
echo 'Bar: ' . $string . PHP_EOL;
}
}

$foo = new Foo();
$bar = new Bar();
$foo->printItem('baz'); // Salida: 'Foo: baz'
$foo->printPHP();       // Salida: 'PHP is great'
$bar->printItem('baz'); // Salida: 'Bar: baz'
$bar->printPHP();       // Salida: 'PHP is great'

?>

Вы должны знать, что вы можете генерировать новые объекты в другие классы. Но вы можете наследовать все свойства от класса A до класса B без создания нового экземпляра. Например:

<?php

Class A {

public function something() {
$var = 'Hello!';
return $var;
}
}

Class B extends A {

function createObjectB() {
echo $this->something().' I am learning classes in php';
}
}

$b = new B;
$b->createObjectB();

?>

Пожалуйста, посетите эту страницу http://php.net/manual/es/language.oop5.inheritance.php для больше о.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]