📜  PHP oops面对对象概念(1)

📅  最后修改于: 2023-12-03 14:45:12.415000             🧑  作者: Mango

PHP OOPs - 面向对象概念

在PHP中,面向对象编程是一种广泛采用的编程范式。它将代码组织为对象,使得代码更具有灵活性,易于维护和扩展。 在本文中,我们将学习PHP面向对象编程的一些基本概念以及它们的实际应用。

类和对象

在PHP OOPs中,一个类就像是一个蓝图或者模板,它定义了一个对象的属性和方法。对象是类的一个实例,它可以访问该类中定义的属性和方法。 声明一个类的语法如下:

class MyClass {
    // properties and methods
}

在类中定义属性和方法,例如:

class MyClass {
    public $name; // property
    public function sayHello() { // method
        echo "Hello!";
    }
}

要创建一个对象,可以使用new运算符,在类的名称后面跟随括号。例如:

$myObj = new MyClass();

要访问类的属性和方法,可以使用 -> 运算符,例如:

$myObj->name = "John";
$myObj->sayHello();
封装

封装是一种面向对象编程的重要概念。它涉及到将属性和方法放入类中,并将其设置为public、private或protected。

public 属性和方法可以在类外部被访问。

class MyClass {
    public $name; // public 属性
    public function sayHello() { // public 方法
        echo "Hello!";
    }
}

$myObj = new MyClass();
$myObj->name = "John"; // 可以从类的外部访问
$myObj->sayHello(); // 可以从类的外部访问

private 属性和方法只能在类内部被访问。

class MyClass {
    private $name; // private 属性
    private function sayHello() { // private 方法
        echo "Hello!";
    }
}

$myObj = new MyClass();
$myObj->name = "John"; // 会报错,因为属性是私有的
$myObj->sayHello(); // 会报错,因为方法是私有的

protected 属性和方法只能在类内部和其子类中被访问。

class MyClass {
    protected $name; // protected 属性
    protected function sayHello() { // protected 方法
        echo "Hello!";
    }
}

class MyChildClass extends MyClass {
    public function accessProtected() {
        $this->name = "John"; // 可以从子类中访问
        $this->sayHello(); // 可以从子类中访问
    }
}

$myObj = new MyClass();
$myObj->name = "John"; // 会报错,因为属性是受保护的
$myObj->sayHello(); // 会报错,因为方法是受保护的

$myChildObj = new MyChildClass();
$myChildObj->accessProtected(); // 可以从子类中访问
继承

继承是一个类从另一个类获取属性和方法的机制。这个类称为子类,另一个类称为父类。子类可以重载父类的方法并添加新的方法,以扩展其功能。

class MyClass {
    public function sayHello() {
        echo "Hello!";
    }
}

class MyChildClass extends MyClass {
    public function sayGoodbye() {
        echo "Goodbye!";
    }
}

$myChildObj = new MyChildClass();
$myChildObj->sayHello(); // 继承父类的方法
$myChildObj->sayGoodbye(); // 添加子类的方法
多态

多态是一个对象可以在不同的环境中表现出不同的行为的能力。它允许我们使用一个抽象的数据类型,而不必担心其类型的实际实现。

interface Animal {
    public function makeSound();
}

class Dog implements Animal {
    public function makeSound() {
        echo "Woof!";
    }
}

class Cat implements Animal {
    public function makeSound() {
        echo "Meow!";
    }
}

$dog = new Dog();
$cat = new Cat();

$animals = array($dog, $cat);

foreach($animals as $animal) {
    $animal->makeSound(); // 狗汪汪,猫喵喵
}
总结

在本文中,我们涵盖了PHP面向对象编程的一些基础知识,包括类、对象、封装、继承和多态。在实践中,使用OOPs的方法可以大大提高代码的灵活性和可维护性,为大型项目的编写提供了更好的方式。