我已经了解了封装性,并且我的理解是,它的好处是防止改变属性的值?(如果我误解了,请警告我)。
然而,它有一个setter方法可以改变属性
所以现在我很困惑为什么他们不正常使用公共属性。
然而,它有一个setter方法可以改变属性
private $bar
的值。 我是否误解了?因为它不再防止改变属性的值。<?php
class Foo
{
private $bar = 3;
public function getbar()
{
return $this->bar;
}
public function setBar($bar)
{
$this->bar = $bar;
}
}
$foo = new Foo();
echo $foo->getbar(); //Print '3'
$foo->setBar("Hello");
echo $foo->getbar(); //Print 'Hello'
?>
所以现在我很困惑为什么他们不正常使用公共属性。
class Foo2
{
public $bar = 3;
}
$foo2 = new Foo2();
echo $foo2->bar; // Print '3'
$foo2->bar = 'Hello';
echo $foo2->bar; //Print 'Hello';
Foo
,情况将会改变,因为bar
将不会被继承。 - Sebastianpublic
而是使用带有getter和setter的private
。 - Sebastian