Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:未初始化的类成员/属性出错_Php - Fatal编程技术网

PHP:未初始化的类成员/属性出错

PHP:未初始化的类成员/属性出错,php,Php,在我看来,PHP类成员的严格程度低于变量,即使是在最严格的错误报告上。 比如说 class A { public function __construct() { $this->test = 0; } } $a = new A(); 在任何情况下都不会给出错误。我想手动将$test定义为public/protected/private。当然,我可以定义“获取$field”和“设置$field”,但我正在寻找一个全局解决方案。这不是一个bug,而是

在我看来,PHP类成员的严格程度低于变量,即使是在最严格的错误报告上。 比如说

class A
{
    public function __construct()
    {
        $this->test = 0;
    }
}

$a = new A();

在任何情况下都不会给出错误。我想手动将$test定义为public/protected/private。当然,我可以定义“获取$field”和“设置$field”,但我正在寻找一个全局解决方案。

这不是一个bug,而是一个功能。请仔细阅读。您可以使用uuu get和uuu set方法模拟活动记录模式,并对内部数组进行操作,这就是链接文章中的情况。我想我的建议是,在缺少get和set魔术方法的情况下,它会像call一样延迟到错误而不是自动初始化。我的建议和那篇文章之间没有矛盾,尽管它可能会破坏很多代码。好吧,我注意到我不是在寻找一个uuu get/uu set hack。
<?php
class A
{
    private  $test;

    public function __construct( $test = 0 ) // set a default value to 0 if no parameters

    {

        $this->test = $test;



    }

    public function __set( $field  )

    {
        if( isset( $field ) === true )

        {  
            $this->test = $field;
            return true;
        }

        return false;

    }
    public function __get()

    {

        return $this->test;

    }

}
 $a = new A();

 echo $a->get();
?>