I want to add a dog object to an array and var_dump
it after but the array stays empty. Am I breaking some rule of the OOP concept or something?
class Dog {
public $name;
public $bread;
}
class MyClass {
public $dogArr = [];
public function __construct( $key , callable $callback ) {
$dogArr[$key] = $callback ();
}
}
public function actionTest() {
$newDog = new \backend\components\MyClass ( "first" , function () {
$dog = new \backend\components\Dog();
$dog->name = "Archi";
$dog->bread = "Pomeran";
return $dog;
} );
var_dump ( $newDog->dogArr );
}
You just need a small change to your MyClass
constructor:
Change:
$dogArr[$key] = $callback();
to
$this->dogArr[$key] = $callback();
Otherwise you're just setting a value in a local variable, rather than the class property.
Hi if u want to access the property of class u have to use self or $this operator
Following should work
class Dog
{
public $name;
public $bread;
}
class MyClass
{
public $dogArr = [];
public function __construct($key, callable $callback){
$this->dogArr[$key] = $callback();
}
}
public function actionTest(){
$newDog = new \backend\components\MyClass("first", function (){
$dog = new \backend\components\Dog();
$dog->name = "Archi";
$dog->bread = "Pomeran";
return $dog;
});
var_dump($newDog->dogArr);
}
actionTest();