PHP fatal error : Cannot access empty property

标签 php fatal-error

我是 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/

相关文章:

ios - 核心数据 fatal error : unexpectedly found nil while unwrapping an Optional value

php - 如何将本地主机数据库 php mysql 文件传输到 C 面板服务器而不会出现错误或问题

php - 查询 PHP 信号量而不阻塞?

linux - git pull/push 返回 : fatal: protocol error: bad line length character: _

python - 如何停止致命的Python错误: PyEval_SaveThread: NULL tstate

java - JNI 崩溃 JVM - Java 运行时环境 : EXCEPTION_ACCESS_VIOLATION 检测到 fatal error

php security 我应该在 url 中隐藏查询字符串吗

php - 如何在laravel中使用特殊消息管理特殊错误

php - 通过 php 将日期插入到 php 表失败

php - fatal error : Class 'SoapClient' not found