博客用的是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 属性。

本页地址: https://brag.cn/archives/26/
×
TOP