PHP Fatal error: Cannot access empty property PHP Fatal error: Cannot access empty property php php

PHP Fatal error: Cannot access empty property


You access the property in the wrong way. With the $this->$my_value = .. syntax, you set the property with the name of the value in $my_value. What you want is $this->my_value = ..

$var = "my_value";$this->$var = "test";

is the same as

$this->my_value = "test";

To fix a few things from your example, the code below is a better aproach

class my_class {    public  $my_value = array();    function __construct ($value) {        $this->my_value[] = $value;    }    function set_value ($value) {        if (!is_array($value)) {            throw new Exception("Illegal argument");        }        $this->my_value = $value;    }    function add_value($value) {        $this->my_value = $value;    }}$a = new my_class ('a');$a->my_value[] = 'b';$a->add_value('c');$a->set_value(array('d'));

This ensures, that my_value won't change it's type to string or something else when you call set_value. But you can still set the value of my_value direct, because it's public. The final step is, to make my_value private and only access my_value over getter/setter methods


First, don't declare variables using var, but

public $my_value;

Then you can access it using

$this->my_value;

and not

$this->$my_value;


To access a variable in a class, you must use $this->myVar instead of $this->$myvar.

And, you should use access identifier to declare a variable instead of var.

Please read the doc here.