为什么对象在执行后会重置?编辑
why an object resets after execution? edited
我不是编程新手,但我发现自己在质疑函数在执行后如何重新启动。有人告诉我,每次方法启动时, 属性 或变量设置,同时方法 运行 重置。
如果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也消失了。
你能解释一下这个机制吗?
还是我错过了一些非常基础的编程?
提前致谢。
属性 需要是 public,或者由 public getter 返回,以便在 class 之外访问它。通常代码会失败并显示消息:
Fatal error: Cannot access private property test::$prop1 in xxx.php on line x
但是关闭了错误报告(或被定向到一个未被检查的日志文件 ;))echo $test->prop1;
没有执行,程序也没有输出,给人的印象是该变量为空。
error_reporting(E_ALL);
将使程序失败并显示相应的消息。
PHP 使用 garbage collector。当一个变量变得不可访问时,它就会被销毁。
关于您的代码 - $prop
参数的值在方法 test1()
完成后不会被销毁,因为您将它存储在 $prop1
属性 中。 $test->prop1
在 test1()
退出后仍然可以访问(即使不是直接退出)。
class test
{
private $prop1;
function test1($prop)
{
$prop1 = $prop;
$this->prop1 = $prop1;
}
}
$test = new test();
$test->test1('hello');
var_dump($test);
输出:
object(test)#1 (1) {
["prop1":"test":private]=>
string(5) "hello"
}
我不是编程新手,但我发现自己在质疑函数在执行后如何重新启动。有人告诉我,每次方法启动时, 属性 或变量设置,同时方法 运行 重置。
如果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也消失了。
你能解释一下这个机制吗?
还是我错过了一些非常基础的编程?
提前致谢。
属性 需要是 public,或者由 public getter 返回,以便在 class 之外访问它。通常代码会失败并显示消息:
Fatal error: Cannot access private property test::$prop1 in xxx.php on line x
但是关闭了错误报告(或被定向到一个未被检查的日志文件 ;))echo $test->prop1;
没有执行,程序也没有输出,给人的印象是该变量为空。
error_reporting(E_ALL);
将使程序失败并显示相应的消息。
PHP 使用 garbage collector。当一个变量变得不可访问时,它就会被销毁。
关于您的代码 - $prop
参数的值在方法 test1()
完成后不会被销毁,因为您将它存储在 $prop1
属性 中。 $test->prop1
在 test1()
退出后仍然可以访问(即使不是直接退出)。
class test
{
private $prop1;
function test1($prop)
{
$prop1 = $prop;
$this->prop1 = $prop1;
}
}
$test = new test();
$test->test1('hello');
var_dump($test);
输出:
object(test)#1 (1) {
["prop1":"test":private]=>
string(5) "hello"
}