昨天我在PHP here中有一些关于OO和类的问题,但我有几个新问题。
1a)的
在下面的示例代码段中,您将看到在类顶部设置的3个变量,然后在类中的方法中使用。注意在开头声明的3变量是如何设置为什么的,所以是否需要设置/列出类将在顶部使用的所有变量?
1b)或者他们只是在顶部调用它们将它们设置为受保护/私人/公共吗?
1c)是否总是需要设置这样的变量,假设所有变量都是公共的,你还需要在开头设置它们吗?
<?PHP
class widget{
private $name;
public $price;
private $id;
public function __construct($name, $price){
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
}
?>
答案 0 :(得分:2)
在类声明中声明但在方法内没有声明的变量是该类的“成员变量” - 它们仅限于类,但可用于该对象的所有方法,并且将创建一组新的每个方法对于每个对象的实例。
$a = new widget("first", 0.1);
$b = new widget("second", 0.2);
echo $a->price; // will echo 0.1
echo $b->price; // will echo 0.2
echo $price; // will not echo anything unless you set $name to something elsewhere
echo $name; // will not echo anything unless you set $name to something elsewhere
echo $a->name; // will give you an error since 'name' is private to the class
答案 1 :(得分:1)
如果要设置变量的范围,则需要像上面一样在类声明中声明它。如果您只想让变量具有公共范围,您可以通过简单地使用以下方法在方法中即时设置:
$this->variable_name = "value";
以这种方式声明的变量可以在类中的任何方法中使用,也可以在任何子类(扩展此类的类)中的任何方法中使用。