关于PHP中OO的问题仍在继续

时间:2009-09-12 01:00:04

标签: php class oop

昨天我在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();
    }
}
?>

2 个答案:

答案 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";

以这种方式声明的变量可以在类中的任何方法中使用,也可以在任何子类(扩展此类的类)中的任何方法中使用。