Здравствуйте, хочу реализовать одну вещь, суть ее в следующем: Есть класс А, в нем метод method и свойство atribute и файл, например index.php.
В файле создается экземпляр класса А.
$object = new A();
$object->method();
Однако мне нужно, чтобы свойство я мог получить только после вызова этого метода, т.е. IDE мне подсказывает, что я могу после $object-> выбрать ИЛИ $atribute ИЛИ method(); Нужно, чтобы $atribute я мог получить ТОЛЬКО после вызова method(), например:
$object->method()->atribute;.
Как это можно сделать?
не претендует на ответ, но то что вы описываете обычно выглядит примерно так:
class InnerA {
public $name = "namenamename";
}
class A {
private $inner = null;
public function myMethod(){
if(!$this->inner){
$this->inner = new InnerA();
}
return $this->inner;
}
}
$a = new A();
print $a->myMethod()->name;
Если вы объявите публичное свойство $name в класса A, то ничто и никто не помешает обратиться к нему, раньше чем к какому-то методу, как вы говорите.
На этапе выполнения, вы конечно можете это контролировать создав исключение при нежелательном доступе, но на этапе разработки это не возможно.
Разобрался
class A
{
public $atribute;
protected function method()
{
$this->atribute = "Hello, World";
return $this->atribute
}
}
class B extends A
{
protected $test;
public function test()
{
$this->test = new A();
$this->test->method();
return $this->test;
}
}
$object = new B();
$object->test->test()->atribute;
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости