访问类中私有/受保护变量的正确方法(PHP)

时间:2014-06-25 14:56:08

标签: php class oop

在PHP中访问类中的私有/受保护变量的正确方法是什么?

我了解到可以使用__construct功能进行访问。 实施例

class helloWorld
{
    public $fname;
    private $lname;
    protected $full;
    function __construct()
    {
        $this->fname = "Hello";
        $this->lname = "World";
        $this->full = $this->fname . " " . $this->lname;
    }
}

或创建GetterSetters功能。我不知道这是否正确。

class helloWorld
{
    public $fname;
    private $lname;
    protected $full;

    function getFull(){
        return $this->full;
    }

    function setFull($fullname){
        $this->full = $fullname;
    }

}

或通过__toString。我很困惑我应该用什么。对不起,我还是OOP的新手。另外php中的::符号是什么?如何使用它?

谢谢:)

2 个答案:

答案 0 :(得分:2)

最好定义您的公共getter和setter,并仅使用它们来获取和设置类属性。然后让所有其他函数使用这些getter和setter集中管理属性。

答案 1 :(得分:1)

:: operator被称为scope resolution operator。它有一个用例。

1.可以用来引用静态变量或类的功能。语法为class name::variable_nameclass name::function_name()。这是因为静态变量或函数是通过类名引用的。

2.它也可以用于功能覆盖。您可以通过示例

来理解它
class Base
{
    protected function myFunc() {
        echo "I am in parent class \n";
    }
}

class Child extends Base
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        Base::myFunc();
        echo "I am in the child class\n";
    }
}

$class = new Child();
$class->myFunc();

当您希望首先执行父函数然后执行子函数时,这非常有用。

3.它还用于通过self::$variable_name OR self::function_name()引用类本身中的变量或函数。 Self用于指代类本身。