PHP:属性可见性,静态等


PHP: Property visibilty, static, etc

我知道这是一个非常愚蠢的问题,但我真的不明白的东西,我每天使用它们,但我不确定它们是如何工作的。

class Bootstrap
{
public static $frontController = null;
public static $root = '';

public static, protected, public…所有人?什么时候最好使用每一个…

  • static意味着通过self::$var而不是$this->var访问值,不是特定于实例的(即它也可以在静态方法中使用),因此非常适合单例模式和类似模式
  • 一个public变量可以从任何地方访问,即从类内部和外部
  • protected变量只能从类内部和从定义了该变量的类继承的类中访问
  • 一个private变量只能在类
  • 中访问

既然你问的是面向对象的基础知识,这里有一些更多的关键字值得解释:

  • abstract类不能被实例化,只能作为基类使用;包含抽象方法的类必须是抽象的,从抽象类继承的类必须是抽象的,除非基类的所有抽象方法都实际实现了
  • 不能从
  • 继承final

Public/private/protected指可见性;

http://php.net/manual/en/language.oop5.visibility.php

static表示类的成员是与类本身关联还是与类的实例关联;

http://www.php.net/manual/en/language.oop5.static.php

这些都是语言关键字。

http://php.net/manual/en/reserved.keywords.php

http://en.wikipedia.org/wiki/Keyword_%28computer_programming%29

Public和protected是可见性。Public每个人都可以访问,protected只有继承类和父类可以访问。

Static是一个对所有对象都通用的变量,而不是每个类都有自己的变量,它被所有对象"共享"。

现在到另一个问题,什么时候使用它:

  • 所有属性都应该是私有的,以保护它们不被错误使用。
  • 所有的getter和setter方法都应该是公共的,这样其他对象就可以设置和获取这些值。