#php
#php
Вопрос:
Я долго искал решение этой проблемы, но безуспешно, поэтому я публикую в качестве последнего средства в надежде, что кто-нибудь сможет мне помочь.
class Main
{
private $data = array();
private $a;
private $b;
function __contruct()
{
}
public function a()
{
if (!is_object($this->a))
{
$this->a = new A();
}
return $this->a;
}
public function b()
{
if (!is_object($this->b))
{
$this->b = new B();
}
return $this->b;
}
protected function set_data($value)
{
$this->data = $value;
}
}
class A extends Main
{
function __contrust()
{
parent::_construct();
}
public function test($value)
{
$this->set_data($value);
return $this;
}
}
class B extends Main
{
function __contrust()
{
parent::_construct();
}
public function test($value)
{
$this->set_data($value);
return $this;
}
public function get_data()
{
print_r($this->a);
}
}
$m = new Main();
$m->a()->test('add A class data');
$m->b()->test('add B class data');
$m->b()->get_data(); // want to use class A object data here
Редактировать
[a:private] => A Object
(
[data:private] => Array
(
[0] => Array
(
[name] => foo
[data] => 65
)
[1] => Array
(
[name] => bar
[data] => 65
)
)
[a:private] =>
[b:private] =>
)
У меня есть метод в основном классе, который находит ключ имени, который я ищу, и возвращает его индекс, чтобы я мог манипулировать его данными, которые отлично работают из его вызывающего класса. Однако класс B должен иметь возможность возвращать свои собственные данные обратно в массив данных, а также получать доступ к данным объекта класса A, чтобы я мог манипулировать его данными.
Итак, как вы можете видеть, после создания экземпляра основного класса и запуска класса я хочу иметь возможность использовать объектные данные A в моем классе B…
Был бы очень признателен за любую возможную помощь.
Спасибо,
Даррен
Комментарии:
1. Надеюсь, вам будет проще объяснить, чего вы пытаетесь достичь с помощью этого, т. Е. Почему вы думаете, что вам это нужно, чем нам объяснять, что с этим не так 😉
2. Привет, VolkerK… я сделаю все возможное, чтобы объяснить 🙂 В принципе, у меня есть основной класс для настройки / получения данных и т.д., Затем у меня есть 7 или около того классов, которые выходят за его пределы, каждый из которых устанавливает свои собственные различные данные обратно в основной. Теперь один из этих классов добавляет ключ имени для каждых данных, которые он создает, в основной массив данных. Итак, мне нужно иметь доступ к этому ключу name из другого класса, чтобы я мог обновлять / добавлять больше элементов в «его» массив. Не уверен, имеет ли это смысл или нет, в противном случае я могу отредактировать основной пост и предоставить больше информации?
Ответ №1:
Это код, который вам может понадобиться:
class Main
{
private $data = array();
protected $a;
protected $b;
function __construct()
{
}
public function a()
{
if (!is_object($this->a))
{
$this->a = new A();
}
return $this->a;
}
public function b()
{
if (!is_object($this->b))
{
$this->b = new B();
}
return $this->b;
}
protected function set_data($value,$object)
{
$object->data = $value;
}
}
class A extends Main
{
function __contruct()
{
parent::_construct();
}
public function test($value,$object)
{
$this->set_data($value,$object);
return $this;
}
}
class B extends Main
{
function __contruct()
{
parent::_construct();
}
public function test($value,$object)
{
$this->set_data($value,$object);
return $this;
}
public function get_data()
{
print_r($this);
}
}
$m = new Main();
$m->a()->test('add A class data',$m->b());
$m->b()->test('add B class data',$m->a());
$m->b()->get_data(); // want to use class A object data here
и это результат:
B Object
(
[data:private] => add A class data
[a:protected] =>
[b:protected] =>
)
Комментарии:
1. привет, K102, спасибо, но не совсем то, что я ищу, поскольку данные в объектах A и B меняются местами, а также означают, что все цепочки методов должны были бы передавать параметр object… $m-> b()-> test(‘добавить данные класса B’, $ m-> a())->method(‘abc’, $ m->a())->method1(‘cde’, $ m-> a()); что непрактично … но я ценю ответ