Php 为什么对象在执行后重置?编辑
我对编程并不陌生,但我发现自己在质疑函数在执行后如何重新启动。我被告知,每次方法启动时,在方法运行时设置的属性或变量都会重置 如果在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
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"
}