php中-> 、=>、::、$this->符号意思
博客用的是typecho程序,而typecho用的是php写的,我最近给博客增加功能,在文件源码中见了很多次-> 、=>、::、$this->,专门写篇文章记录下,俗话说的好,好记性不如烂笔头。
网上搜了很多都不是很清楚,只好通过实例来学习这四种符号的意思和用法
// 定义一个名为Car的类,用于描述汽车的基本属性和行为
class Car {
// 声明一个公共属性$color,用于存储车的颜色信息
public $color;
// 声明一个公共属性$brand,用于存储车的品牌信息
public $brand;
// 声明一个私有属性$engineType,用于存储引擎类型的信息
// 私有属性只能在类的内部访问,外部无法直接访问
private $engineType;
// 构造方法,当创建一个新的Car对象时会自动调用这个方法
// 该方法接收三个字符串参数:颜色、品牌和引擎类型,并将它们分别赋值给对象的属性
public function __construct(string $color, string $brand, string $engineType) {
$this->color = $color; // 将传入的颜色值赋给$color属性
$this->brand = $brand; // 将传入的品牌值赋给$brand属性
$this->engineType = $engineType; // 将传入的引擎类型值赋给$engineType属性
}
// 公共方法,用于获取私有属性$engineType的值
// 外部无法直接访问私有属性,所以需要通过这个方法来获取其值
public function getEngineType(): string {
return $this->engineType; // 返回$engineType属性的值
}
// 静态方法,这个方法属于类本身,而不是类的某个具体对象
// 因此,可以直接通过类名来调用这个方法,而不需要创建对象
public static function sayHello() {
echo "Hello from Car class"; // 输出一条问候信息
}
}
// 创建一个关联数组$carSpecs,用于定义一辆车的规格信息
// 关联数组的键表示规格名称,值表示具体的规格值
$carSpecs = ['color' => 'Red', 'brand' => 'Toyota', 'engineType' => 'Petrol'];
// 使用关联数组中的值作为参数,创建一个新的Car对象$myCar
$myCar = new Car($carSpecs['color'], $carSpecs['brand'], $carSpecs['engineType']);
// 输出$myCar对象的颜色和品牌信息
echo "{$myCar->color} {$myCar->brand} car.<br>"; // 输出格式为:颜色 品牌 car.
// 调用$myCar对象的getEngineType方法,获取引擎类型信息,并输出结果
echo "Engine Type: {$myCar->getEngineType()}<br>"; // 输出格式为:Engine Type: 引擎类型
// 直接通过类名调用Car类的静态方法sayHello,并输出结果
Car::sayHello(); // 输出:Hello from Car class
->:对象操作符
用于访问对象的属性和方法。
在上述代码中,$myCar->color 和 $myCar->brand 分别用于访问 $myCar 对象的 color 和 brand 属性。
同样,$myCar->getEngineType() 用于调用 $myCar 对象的 getEngineType 方法。
=>:数组键值对操作符
用于在数组中定义键值对。
在上述代码中,$carSpecs 数组使用了 => 来定义键值对,如 'color' => 'Red' 表示键为 'color',值为 'Red'。
:::作用域解析操作符(也称为双冒号操作符)
用于访问类的静态属性、静态方法和常量,以及覆盖的属性和方法。
还可以用于访问类的父类中的属性和方法(在子类中通过 parent:: 的形式)。
在上述代码中,Car::sayHello() 用于调用 Car 类的静态方法 sayHello。
$this->:当前对象实例操作符
在类的非静态方法内部,$this 引用当前对象的实例。
通过 $this-> 可以访问当前对象的属性和方法。
在上述代码中,$this->color、$this->brand 和 $this->engineType 分别用于在 __construct 方法和 getEngineType 方法中访问当前对象的 color、brand 和 engineType 属性。