我是PHP的新手,但是来自Java背景。我对以下代码感到困惑:
class Student
{
//public $name;
public function __construct($name)
{
$this->name=$name;
}
public function showname()
{
echo $this->name;
}
}
在上面的代码中,如果我对行public $name;
发表评论,它仍然有用。但是,在Java中它不应该工作。我想在PHP中理解这种行为。
答案 0 :(得分:1)
答案非常简单,在你的构造函数中,你要用$来调用的每个变量都将在你的类中创建,它相当于在你的类中声明它然后使用它。
答案 1 :(得分:0)
PHP是一种松散类型的语言。与Java等语言不同,您无需在类中声明字段即可使用它们。通过在构造函数中设置名称,可以创建并设置字段。
如果要删除构造函数中的构造函数或字段设置,则在调用showsame()时该名称将不存在。
答案 2 :(得分:0)
PHP使用隐式属性声明。您可以从任何地方声明和分配属性(甚至从类外部)。
<?php
$object1 = new User();
$object1->name = "Alice";
echo $object1->name;
class User {}
?>
可以正常工作并打印&#34; Alice&#34; ...
答案 3 :(得分:0)
这是PHP自动声明的默认行为。
你的问题是重复的 Stack overflow duplicate