我对编程并不陌生,但我发现自己质疑一个函数在执行后如何重新启动。我被告知,每次方法启动时,属性或变量集都会在运行方法时重置。
如果PHP中的下面的函数执行,则对象集的属性将消失。 它是如何工作的?
class test{
public $prop1;
function test1($prop){
$prop1 = $prop;
$this->prop1 = $prop1;
}
}
$test = new test();
$test->test1("string");
echo $test->prop1;
正如您可以看到上面的示例代码,它存储变量" $ prop" at property" prop1"。
但执行后,属性消失,变量$ prop1也消失了。
你能解释一下这种机制吗?
或者我是否会错过一些非常基本的编程?
提前致谢。
答案 0 :(得分:1)
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"
}
答案 1 :(得分:0)
该属性需要公开,或由公共getter返回,以便在类外访问它。通常,代码将失败并显示消息:
Fatal error: Cannot access private property test::$prop1 in xxx.php on line x
但是关闭了错误报告(或被定向到未经检查的日志文件;))echo $test->prop1;
没有执行,并且程序没有输出,变量为空的印象。
error_reporting(E_ALL);
将使程序失败并显示相应的消息。