跳转至

PHP 类

约 233 个字 53 行代码 预计阅读时间 1 分钟

创建与使用

1
2
3
4
5
6
7
8
class a{
  public function b(){
    echo 'c';
  }
}

$d = new a();
$d -> b();

构造方法

创建类的时候执行的方法。

public function __construct([$a, ...])

类的参数的含义可以通过注释来说明,数据类型也可以在这里定义:

1
2
3
4
/**
 * @param $a
 * @param $b
 */
1
2
3
4
/**
 * @param $a 关于a的说明
 * @param $b 关于b的说明
 */
1
2
3
4
/**
 * @param int $a
 * @param string $b
 */

类的属性可以通过$this -> a形式来定义。

类的方法的分类

成员方法

需要通过实例进行访问。

public function a(){}
private function a(){}

类方法

不需要依赖实例访问,可以使用 类名::方法() 这样的形式访问。

public static function a(){}
private static function a(){}

类的特殊变量/常量

静态变量

可以使用 类名::$B() 这样的形式访问。

public static $B
private static $B

静态常量

可以使用 类名::C() 这样的形式访问。前面不用加 public / private,可被外部访问。

const C

继承

继承 b 类的 a 类:

class b extends a{}

父类的 m 方法:

parent::m($a)

单态类

目的是为了产生唯一的对象。

首先,对象不直接构造,构造函数私有,使用静态方法进行间接构造。

class A{
  private function __construct(){
    ...
  }
  static function makeA(){
    return new self();
  }
}
new A(); //报错
A::makeA();  //可以运行

然后,私有属性:

class A{
  private static $a = null;
  private function __construct(){
    ...
  }
  static function makeA(){
    if(self::$a == null){
      self::$a = new self();
    }
    return self::$a;
  }
}
A::makeA();