当前位置: 首页 > 面试题库 >

PHP致命错误:无法访问空属性

易阳朔
2023-03-14
问题内容

我是新手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

问题答案:

您以错误的方式访问属性。使用$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'));

这样可以确保在调用set_value时,my_value不会将其类型更改为字符串或其他类型。但是您仍然可以直接设置my_value的值,因为它是公共的。最后一步是将my_value设为私有,并且仅通过getter
/ setter方法访问my_value



 类似资料:
  • 问题内容: 有谁知道会导致这个问题的原因吗? PHP致命错误:无法重新声明类 问题答案: 这意味着您已经创建了一个类。 例如: 第二个Foo会抛出错误。

  • 我有一个网站,在我的本地主机与xampp完美地工作,但。。。我把它上传到了一些免费的网站(000webhost和hostinger),当我试图打开它时,收到了以下消息: 警告:require(core/libs/smarty/smarty.class.php):无法打开流:在/home/u327900732/public_html/www/index中没有这样的文件或目录。php在线7 致命错误:

  • 我无法从cmd windows 10执行java jar文件。我使用Intellji生成了一个jar文件。 当我运行命令Java-jar时,我得到了这个错误 错误:无法访问jarfile 我试着用管理权限运行cmd,但同样的错误。类路径设置正确。jar文件位于正确的目录中。 是什么导致了这个问题?谢谢

  • 我想在不使用IDE的情况下执行我的程序。我已经创建了一个jar文件和一个可执行的jar文件。当我双击exe jar文件时,什么也没有发生,当我尝试在cmd中使用命令时,它给出以下信息: 我使用命令:java-jar Calculator.jar 我是如何创建jar的: 右键单击项目文件夹(计算器) 选择 单击Java文件夹并选择可执行罐文件,然后选择下一个 启动配置:主-计算器 创建出口目的地 命

  • 我是如何创建罐子的: 右键单击项目文件夹(计算器) 选择 单击Java文件夹并选择“Exectuable Jar文件”,然后选择Next 启动配置:main-calculator 创建导出目标 打“完”获利!嗯,也不是。

  • 问题内容: 我从Apache得到以下错误 [2011年3月19日23:10:50周六] [警告] mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需的’/common/configs/config_templates.inc.php’(include_path =’ 。:/ usr / share / pear:/ us