【问题标题】:Proper way of accessing private/protected variables in a class (PHP)访问类中私有/受保护变量的正确方法(PHP)
【发布时间】:2014-08-16 05:14:57
【问题描述】:

在 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 中的:: 符号,我该如何使用它?

谢谢:)

【问题讨论】:

标签: php class oop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    :: 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_nameself::function_name()引用类本身内的变量或函数。 Self 用于引用类本身。

    【讨论】:

      猜你喜欢
      • 2018-07-16
      • 2017-01-12
      • 2011-05-14
      • 2023-04-09
      • 1970-01-01
      • 2014-05-14
      • 2012-11-25
      • 1970-01-01
      • 2019-11-21
      相关资源
      最近更新 更多