在PHP中访问类中的私有/受保护变量的正确方法是什么?
我了解到可以使用__construct
功能进行访问。
实施例
class helloWorld
{
public $fname;
private $lname;
protected $full;
function __construct()
{
$this->fname = "Hello";
$this->lname = "World";
$this->full = $this->fname . " " . $this->lname;
}
}
或创建Getter
或Setters
功能。我不知道这是否正确。
class helloWorld
{
public $fname;
private $lname;
protected $full;
function getFull(){
return $this->full;
}
function setFull($fullname){
$this->full = $fullname;
}
}
或通过__toString
。我很困惑我应该用什么。对不起,我还是OOP的新手。另外php中的::
符号是什么?如何使用它?
谢谢:)
答案 0 :(得分:2)
最好定义您的公共getter和setter,并仅使用它们来获取和设置类属性。然后让所有其他函数使用这些getter和setter集中管理属性。
答案 1 :(得分:1)
:: operator
被称为scope resolution operator
。它有一个用例。
1.可以用来引用静态变量或类的功能。语法为class name::variable_name
或class 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用于指代类本身。