ОПП. Как передать свойства внутрь класса?
Есть класс родитель. Который используется повсеместно в коде. Я пытаюсь воспользоваться одним из его потомков и передать значение переменной, чтобы внутри метода родителя воспользоваться этой переменной. Но почему то не выходит. Заранее спасибо за ответ.
<?
class class1{
public $value;
public function setFlag($flag)
{
$this->value = $flag;
}
public function getFlag(){
return $this->value;
}
function registerVar(){
$this->value; // почему ту является null
}
}
class class2 extends class1{
function fu2(){
$this->registerVar();
}
}
class class3 extends class2{
function fu3(){
$this->fu2();
}
}
class class4{
// точка входа
// Этот метод, дергается ajax
public function indexAction(){
$module = new class3();
$module->setFlag(true); // что я передаю и надеюсь увидеть
$module->fu3();
}
}
?>
Ответы (1 шт):
Ну вот ты создал объект класса 4: $obj = new class4();
Вызвал метод: $obj->indexAction();
Внутри метода indexAction() у тебя и будет объект $module. Ты либо там же с ним продолжай что-то делать, например дополни: var_dump($module->value); тебе это $obj->indexAction(); выдаст bool(true);
Либо создавай public $module поле внутри class4 и внутри indexAction() уже пиши:
$this->module = new class3();
$this->module->setFlag(true);
А потом уже через объект обращайся, например: var_dump($obj->module->value); тебе так же выдаст bool(true)
class class1
{
public $value;
public $asd;
public function setFlag($flag)
{
$this->value = $flag;
}
public function getFlag()
{
return $this->value;
}
function registerVar($name)
{
$this->$name = $this->value;
}
}
class class2 extends class1
{
}
class class3 extends class2
{
}
class class4
{
public $module;
public function indexAction()
{
$this->module = new class3();
$this->module->setFlag(true);
}
}
$zxcv = new class4();
$zxcv->indexAction();
$zxcv->module->registerVar('asd');
var_dump($zxcv->module->asd);
Если ты внутри метода создашь просто так объект, то только внутри метода он и будет доступен, метод выполнится и все, больше ты этот объект не увидишь, и значение которое там присвоил исчезнет.