Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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_Object_Methods_Execute - Fatal编程技术网

Php 为什么对象在执行后重置?编辑

Php 为什么对象在执行后重置?编辑,php,object,methods,execute,Php,Object,Methods,Execute,我对编程并不陌生,但我发现自己在质疑函数在执行后如何重新启动。我被告知,每次方法启动时,在方法运行时设置的属性或变量都会重置 如果在PHP中执行下面的函数,则对象集的属性将消失。 它是如何工作的 class test{ public $prop1; function test1($prop){ $prop1 = $prop; $this->prop1 = $prop1; } } $test = new test(); $test

我对编程并不陌生,但我发现自己在质疑函数在执行后如何重新启动。我被告知,每次方法启动时,在方法运行时设置的属性或变量都会重置

如果在PHP中执行下面的函数,则对象集的属性将消失。 它是如何工作的

class test{
    public $prop1;

    function test1($prop){

        $prop1 = $prop;

        $this->prop1 = $prop1;
    }
}
$test = new test();
$test->test1("string");
echo $test->prop1;
正如上面的示例代码所示,它将变量“$prop”存储在属性“prop1”中

但在执行之后,属性消失,变量$prop1也消失

你能解释一下这个机制吗

还是我错过了一些非常基本的编程


提前感谢。

属性需要是公共的,或者由公共getter返回,以便在类外访问它。通常情况下,代码会失败,并显示以下消息:

致命错误:无法访问x行xxx.php中的私有属性测试:$prop1

但在关闭错误报告(或指向未被检查的日志文件)的情况下,
echo$test->prop1不执行,并且程序没有输出,给人的印象是变量为空

错误报告(E_ALL)
将使用适当的消息使程序失败。

PHP使用。当变量变得不可访问时,它将被销毁

关于您的代码-方法
test1()
完成后,
$prop
参数的值不会被销毁,因为您将其存储在
$prop1
属性中<退出
test1()
后,仍然可以访问code>$test->prop1
(即使不是直接访问)

输出:

object(test)#1 (1) {
  ["prop1":"test":private]=>
  string(5) "hello"
}

你说的“处决后”到底是什么意思?向我们展示你实例化这个类并调用这个方法的代码,然后检查这个值,发现它已经消失了。Thanksy您的属性是私有的,因此您不能像在类之外那样访问它,除非您将其公开或提供一个公共方法来返回私有值。它应该抛出一个错误,但必须关闭错误报告。将这一行复制到您的文件中并再次运行:
error\u reporting(E\u ALL)哦,它应该是公开的,而不是私人的,谢谢你纠正我。
object(test)#1 (1) {
  ["prop1":"test":private]=>
  string(5) "hello"
}