什么时候以及为什么我应该在类中使用公共、私有和受保护的函数和变量?它们之间的区别是什么?
例子:
// Public
public $variable;
public function doSomething() {
// ...
}
// Private
private $variable;
private function doSomething() {
// ...
}
// Protected
protected $variable;
protected function doSomething() {
// ...
}
又提了一个老问题,但我认为从你所定义的API的角度来考虑这个问题是一个很好的方法。
public——所有标记为public的东西都是API的一部分,任何使用你的类/接口/其他的人都会使用和依赖它。
protected -不要被愚弄了,这也是API的一部分!人们可以子类化,扩展你的代码,使用任何标记为受保护的东西。
private -私有属性和方法可以随心所欲地更改。没有其他人可以使用这些。这些是唯一可以在不进行破坏性更改的情况下进行更改的内容。
或者用Semver的话说:
对任何公共或受保护的内容的更改都应被视为重大更改。
任何新的公开或受保护的内容(至少)都应该是MINOR
只有对任何私有内容的新/更改才能被PATCH
因此,在维护代码方面,注意哪些内容是公开的或受保护的,因为这些是你向用户承诺的内容。