Вызов функции при доступе к свойству (магические методы PHP)

в основном я использую PHP Overloading для создания динамических методов и свойств. Я хочу вызвать функцию для доступа к свойству, но сохранить доступ к его методам.

Другими словами, это мой PHP-код:

Первый класс:

class _class {
private $_instance;

public function __construct() {
$this->_instance = new _object();
}

public function __get($name) {
switch ($name) {
case "instance":
//LOGICS
break;
}
return null;
}
}

Второй класс:

class _object {
public function __call($method, $args) {
switch ($method) {
case "method":
//LOGICS
break;
}
return null;
}
}

Теперь я хочу выполнить функцию при доступе к свойству объекта следующим образом:

$obj = new _class();
echo $obj->instance; //some output here, executing a function
echo $obj->instance->method(); //different output, executing the method of the instance

Спасибо, помощь будет очень признательна!

2

Решение

Когда вы создаете экземпляр первого класса, вы создаете $this->_instance вместо $obj->instance, So $obj->instance будет null и не могу ничего назвать по этому поводу.

Но если вы попробуете $obj->_instance->method();, это будет также плохо, потому что _instance это личное. Так что вам нужно добавить геттер. Попробуй это:

class _class {

private $_instance;

public function __construct() {
$this->_instance = new _object();
}

public function __get($name) {
switch ($name) {
case "instance":
echo "Instance";
break;
}
return null;
}

public function getInstance() {
return $this->_instance;
}

}

class _object {

public function __call($method, $args) {
switch ($method) {
case "method":
echo "Method";
break;
}
return null;
}

}

$obj = new _class();
$obj->instance;
$obj->getInstance()->method();

Выход:

Instance
Method
0

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

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

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