我学习php作为功能和程序语言。现在尝试开始学习以客观为导向,并得到一个重要的问题。
我有代码:
class car {
function set_car($model) {
$this->model = $model;
}
function check_model()
{
if($this->model == "Mercedes") echo "Good car";
}
}
$mycar = new car;
$mycar->set_car("Mercedes");
echo $mycar->check_model();
为什么没有声明$ model会有效呢?
var $model;
在开头?
因为在php中为任何变量工作“自动声明”? 我被困了
答案 0 :(得分:4)
PHP中的每个对象都可以让成员不用声明它们:
$mycar = new car;
$mycar->model = "Mercedes";
echo $mycar->check_model(); # Good car
这是PHP的默认行为。这些是公开的。请参阅manual。
答案 1 :(得分:3)
是的,如果它不存在,PHP会立即为您声明。
无论如何定义它更优雅,并且在使用扩展时建议使用,因为如果你的扩展将使用相同的varnames并且也没有将其定义为private,protected或public,那么你可能会遇到奇怪的情况。 p>
更多信息: http://www.php.net/manual/en/language.oop5.visibility.php
答案 2 :(得分:3)
可以随时创建PHP类成员。通过这种方式,它将被视为公共变量。要声明私有变量,您需要声明它。
答案 3 :(得分:1)
不,这是因为$ model是函数set_car的参数。参数不是变量,而是在调用函数(或类方法)时将设置的变量或值的占位符(引用)。例如,$ model在调用set_car时采用值“Mercedes”。
答案 4 :(得分:1)
是。但这种变量将是公开的。声明类变量为“var”已弃用 - 使用public,protected或private。
答案 5 :(得分:0)
我认为这种行为会导致错误。 让我们考虑一下这个错误印刷的代码
message.author.displayAvatarURL
即使我使用 PHP 7.4+ 类型提示等等,编译器和带有代码检查器的 IDE 都找不到这个错字。