Search code examples
phpfunctionoopconstructorthis

PHP - variable in constructor is empty in other functions of the class


I am trying to access an associative array $foo from a function inside the class. When I log the contents from another function it is empty. I am really unsure what I am doing wrong.

class Item {
    function __construct($x = 1) {
        $y = do_something($x);
        
        $foo = [
            'id' => $y['anotherID'],
            'name' => $y['name']
        ];
    }

    function insertData($data) {
        $variable = $this->foo['id'];
        // if I print $this->foo['id'] I get no output
    }
}

I have also tried another recommendation of using self::$foo but got all sorts of errors about private and static?


Solution

  • You need to use $this->foo = [] instead of $foo = []. It makes it a property of the class.