我是 php
的新手,我已经执行了下面的代码。
<?php
class my_class{
var $my_value = array();
function my_class ($value){
$this->my_value[] = $value;
}
function set_value ($value){
// Error occurred from here as Undefined variable: my_value
$this->$my_value = $value;
}
}
$a = new my_class ('a');
$a->my_value[] = 'b';
$a->set_value ('c');
$a->my_class('d');
foreach ($a->my_value as &$value) {
echo $value;
}
?>
我得到以下错误。可能是什么错误?
Notice: Undefined variable: my_value in C:\xampp\htdocs\MyTestPages\f.php on line 15
Fatal error: Cannot access empty property in C:\xampp\htdocs\MyTestPages\f.php on line 15
最佳答案
您以错误的方式访问该属性(property)。使用 $this->$my_value = ..
语法,您可以使用 $my_value 中的值的名称设置属性。你想要的是 $this->my_value = ..
$var = "my_value";
$this->$var = "test";
与
相同$this->my_value = "test";
为了解决您的示例中的一些问题,下面的代码是一种更好的方法
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'));
这样可以确保 my_value 在您调用 set_value 时不会将其类型更改为字符串或其他内容。但是您仍然可以直接设置 my_value 的值,因为它是公开的。最后一步是,将 my_value 设为私有(private),并且只能通过 getter/setter 方法访问 my_value
关于PHP fatal error : Cannot access empty property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920216/