📜  php 是对象 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:30.654000             🧑  作者: Mango

PHP 是对象 - PHP

PHP 是一种面向对象的编程语言,它支持封装、继承、多态等面向对象编程的特性。PHP 中的对象是一种数据类型,可以存储属性和方法,并且可以通过实例化类来创建对象。

类和对象

在 PHP 中,类用于定义对象的属性和方法。定义一个类需要使用 class 关键字,类名一般使用大写字母开头的单词。以下是一个基本的类定义的示例:

class Person {
    // 类的属性
    public $name;
    public $age;
    
    // 类的方法
    public function sayHello() {
        echo "Hello, my name is {$this->name}.";
    }
}

在上面的示例中,我们定义了一个 Person 类,它有两个属性 nameage,还有一个方法 sayHello,它输出一个问候语并显示出当前对象的 name 属性。

创建一个实例化对象的方法很简单,只需要使用 new 关键字,然后调用类中的方法或属性即可:

$person = new Person();
$person->name = 'Tom';
$person->age = 23;
$person->sayHello(); // 输出 "Hello, my name is Tom."
封装

封装是面向对象编程中的一个重要特性,它指的是将对象的属性和方法存储在一个独立的单元中,并且只向外部暴露必要的接口。在 PHP 中,封装通过访问控制来实现。

PHP 有三种访问控制符:publicprotectedprivate。它们分别表示可以被所有代码访问、可以被当前类及其子类的代码访问、只能被当前类的代码访问。

以下是一个封装示例:

class BankAccount {
    private $balance = 0;
    
    public function deposit($amount) {
        $this->balance += $amount;
    }
    
    public function withdraw($amount) {
        if ($amount <= $this->balance) {
            $this->balance -= $amount;
        } else {
            echo "Insufficient balance.";
        }
    }
    
    public function getBalance() {
        return $this->balance;
    }
}

$account = new BankAccount();
$account->deposit(1000);
$account->withdraw(500);
echo "Current balance is " . $account->getBalance(); // 输出 "Current balance is 500"

在上面的示例中,我们定义了一个 BankAccount 类,它有一个私有属性 balance 和三个公有方法 depositwithdrawgetBalance。这个类通过对访问控制符的运用,将属性 balance 封装了起来,并且只对外部暴露必要的接口来操作这个属性。

继承

继承是面向对象编程中另一个重要特性,它允许一个类继承另一个类的属性和方法。在 PHP 中,继承通过 extends 关键字来实现。

以下是一个继承示例:

class Animal {
    public $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
    
    public function eat() {
        echo "{$this->name} is eating.";
    }
}

class Cat extends Animal {
    public function meow() {
        echo "{$this->name} is meowing.";
    }
}

$cat = new Cat('Tom');
$cat->eat(); // 输出 "Tom is eating."
$cat->meow(); // 输出 "Tom is meowing."

在上面的示例中,我们定义了一个 Animal 类和一个 Cat 类,Cat 类继承了 Animal 类的属性和方法。通过继承,我们可以避免重复定义类似的代码,提高代码的重用性。

多态

多态可以简单理解为同一个方法在不同的对象中表现出不同的行为。在 PHP 中,多态通过重写父类方法来实现。

以下是一个多态示例:

class Shape {
    public function draw() {
        echo "Drawing a shape.";
    }
}

class Circle extends Shape {
    public function draw() {
        echo "Drawing a circle.";
    }
}

class Rectangle extends Shape {
    public function draw() {
        echo "Drawing a rectangle.";
    }
}

$shapes = array(new Circle(), new Rectangle());
foreach ($shapes as $shape) {
    $shape->draw(); // 输出 "Drawing a circle." 和 "Drawing a rectangle."
}

在上面的示例中,我们定义了一个 Shape 类和两个子类 CircleRectangle。这三个类都有一个相同的方法 draw,但是在不同的对象中表现出不同的行为。在实例化这些对象后,我们可以通过循环遍历来调用这些对象的 draw 方法,以实现多态。

总结

PHP 是一种面向对象的编程语言,它支持面向对象编程的特性,包括封装、继承、多态等。通过使用面向对象编程,我们可以提高代码的复用性和可读性,从而更好地实现软件开发任务。