Здравствуйте, хочу реализовать одну вещь, суть ее в следующем: Есть класс А
, в нем метод 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;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Через JIRA REST API создаю инциденты с корпоративного сайтаС логином админа и агентов все работает, а с остальными пользователями (тянутся из LDAP) проблема
ЗдравствуйтеСайт работает в кодировке Windows-1251, в том числе и соединение с базой MySQL