Вы не можете использовать дефисы (тире) в свойствах класса PHP.Имена переменных PHP, свойства классов, имена функций и имена методов должны начинаться с буквы или символа подчеркивания ([A-Za-z_])
и могут сопровождаться любым количеством цифр ([0-9])
.
Вы можете обойти это ограничение, используя memberперегрузка:
class foo
{
private $_data = array(
'some-foo' => 4,
);
public function __get($name) {
if (isset($this->_data[$name])) {
return $this->_data[$name];
}
return NULL;
}
public function __set($name, $value) {
$this->_data[$name] = $value;
}
}
$foo = new foo();
var_dump($foo->{'some-foo'});
$foo->{'another-var'} = 10;
var_dump($foo->{'another-var'});
Однако я бы очень не рекомендовал этот метод, так как он очень интенсивный и просто плохой способ программирования.Переменные и члены с тире не являются общими в PHP или .NET, как было указано.