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

我是新手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致命错误:无法访问空属性 的全部内容, 来源链接: utcz.com/qa/408314.html

回到顶部