Я нахожусь в такой ситуации: я хочу, чтобы объект делал что-то ТОЛЬКО, если он был вызван другим объектом:
EX:
class obj{
private $doIt=false;
private function enableDoIt(){
$this->doIt=true;
}
public function fn(){
$obj= new obj();
$obj->enableDoIt(); // must work
}
}
$obj=new obj();
$obj->enableDoIt(); // <- must fail
Я хочу включить параметр только из своего кода и не позволять пользователю класса устанавливать его, поэтому я не могу использовать публичные сеттеры …
Любая идея?
РЕДАКТИРОВАТЬ:
Как я вижу в вашем комментарии, мне нужно что-то вроде:
obj friend obj
Таким образом, я могу использовать свои личные переменные внутри моего класса с новой версией самого myclass.
class obj{
private $count=0;
private function fn(){
nc=new obj();
nc->cont=2; //called from inside class obj -> want to work
}
}
nc=new obj();
nc->cont=2; //called from outside class obj -> want to not work
Задача ещё не решена.
Других решений пока нет …