Maison  >  Article  >  développement back-end  >  Notes d'étude PHP : bases de la programmation orientée objet

Notes d'étude PHP : bases de la programmation orientée objet

WBOY
WBOYoriginal
2023-10-09 12:46:491080parcourir

Notes détude PHP : bases de la programmation orientée objet

Notes d'étude PHP : bases de la programmation orientée objet, des exemples de code spécifiques sont requis

Introduction :
La programmation orientée objet (POO) est une façon de penser par programmation qui décompose les problèmes en plusieurs objets et définit les interactions entre les objets pour résoudre des problèmes de programmation complexes. En tant que langage de programmation puissant, PHP prend également en charge la programmation orientée objet. Cet article présentera les concepts de base et la syntaxe courante de la programmation orientée objet en PHP, et fournira des exemples de code spécifiques.

  1. Classes et objets
    Dans la programmation orientée objet, une classe est le modèle d'un objet, décrivant les propriétés (variables membres) et le comportement (fonctions membres) de l'objet. Un objet est une instance d'une classe, créée en instanciant la classe. Ce qui suit est un exemple simple de définition de classe et de création d'objet :
class Person {
    // 成员变量
    public $name;
    public $age;
    
    // 构造函数
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
    
    // 成员函数
    public function sayHello() {
        echo "Hello, my name is " . $this->name . " and I am " . $this->age . " years old.";
    }
}

// 创建一个Person对象
$person = new Person("Alice", 25);
$person->sayHello();  // 输出:Hello, my name is Alice and I am 25 years old.

Dans l'exemple ci-dessus, nous avons défini une classe Person, qui contient deux variables membres $name et $age, un constructeur et une fonction membre sayHello(). Instanciez la classe Person via le mot-clé new pour créer un objet Person et appelez la fonction membre de l'objet sayHello() pour afficher les informations de l'objet. new关键字实例化Person类来创建一个Person对象,并调用对象的成员函数sayHello()输出对象的信息。

  1. 封装、继承与多态
    封装、继承和多态是面向对象编程的三大核心特性,它们分别解决了代码复用和扩展的问题。

2.1 封装
封装是指将数据和方法封装在一个类中,并通过访问控制符(public、protected、private)控制数据和方法的访问权限。下面是一个封装的示例:

class Car {
    private $color;
    protected $price;
    
    public function __construct($color, $price) {
        $this->color = $color;
        $this->price = $price;
    }
    
    public function getColor() {
        return $this->color;
    }
    
    public function setColor($color) {
        $this->color = $color;
    }
    
    protected function getPrice() {
        return $this->price;
    }
}

$car = new Car("red", 50000);
echo $car->getColor();  // 输出:red
$car->setColor("blue");
echo $car->getColor();  // 输出:blue

在上面的示例中,我们定义了一个Car类,将颜色和价格封装在类中。通过getColor()和setColor()公有的方法来获取和设置颜色。同时,我们将价格属性设置为受保护的,只能在类内部和子类中访问。

2.2 继承
继承是指一个类可以通过继承另一个类的属性和方法。子类可以重写父类的方法,并且可以新增自己的属性和方法。下面是一个继承的示例:

class Car {
    protected $color;
    
    public function __construct($color) {
        $this->color = $color;
    }
    
    public function getColor() {
        return $this->color;
    }
}

class ElectricCar extends Car {
    private $batteryCapacity;
    
    public function __construct($color, $batteryCapacity) {
        parent::__construct($color);
        $this->batteryCapacity = $batteryCapacity;
    }
    
    public function getBatteryCapacity() {
        return $this->batteryCapacity;
    }
}

$electricCar = new ElectricCar("red", 50);
echo $electricCar->getColor();  // 输出:red
echo $electricCar->getBatteryCapacity();  // 输出:50

在上面的示例中,我们定义了一个Car类和一个ElectricCar类,ElectricCar类继承自Car类。子类ElectricCar通过parent::__construct()

    Encapsulation, héritage et polymorphisme

    L'encapsulation, l'héritage et le polymorphisme sont les trois fonctionnalités principales de la programmation orientée objet. Ils résolvent respectivement les problèmes de réutilisation et d'expansion du code.

    2.1 Encapsulation

    L'encapsulation signifie encapsuler des données et des méthodes dans une classe, et contrôler les droits d'accès aux données et aux méthodes via des caractères de contrôle d'accès (publics, protégés, privés). Voici un exemple d'encapsulation :

    class Shape {
        public function calculateArea() {
            return 0;
        }
    }
    
    class Rectangle extends Shape {
        private $width;
        private $height;
        
        public function setDimensions($width, $height) {
            $this->width = $width;
            $this->height = $height;
        }
        
        public function calculateArea() {
            return $this->width * $this->height;
        }
    }
    
    class Circle extends Shape {
        private $radius;
        
        public function setRadius($radius) {
            $this->radius = $radius;
        }
        
        public function calculateArea() {
            return pi() * $this->radius * $this->radius;
        }
    }
    
    $shapes = array(new Rectangle(), new Circle());
    $shapes[0]->setDimensions(5, 3);
    $shapes[1]->setRadius(2);
    
    foreach ($shapes as $shape) {
        echo $shape->calculateArea() . "<br>";
    }

    Dans l'exemple ci-dessus, nous avons défini une classe Car pour encapsuler la couleur et le prix dans la classe. Obtenez et définissez les couleurs via les méthodes publiques getColor() et setColor(). Dans le même temps, nous définissons l'attribut price comme protégé et n'est accessible qu'à l'intérieur de la classe et des sous-classes.

    🎜2.2 Héritage🎜L'héritage signifie qu'une classe peut hériter des propriétés et des méthodes d'une autre classe. Les sous-classes peuvent remplacer les méthodes de la classe parent et ajouter leurs propres propriétés et méthodes. Voici un exemple d'héritage : 🎜rrreee🎜 Dans l'exemple ci-dessus, nous avons défini une classe Car et une classe ElectricCar, et la classe ElectricCar hérite de la classe Car. La sous-classe ElectricCar appelle le constructeur de la classe parent via la méthode parent::__construct(), et ajoute ses propres attributs et méthode getBatteryCapacity(). 🎜🎜2.3 Polymorphisme🎜Le polymorphisme signifie que la même méthode peut appeler différents comportements basés sur différents objets. Autrement dit, les sous-classes peuvent remplacer les méthodes des classes parentes pour obtenir le polymorphisme. Voici un exemple de polymorphisme : 🎜rrreee🎜 Dans l'exemple ci-dessus, nous avons défini une classe Shape et deux sous-classes Rectangle et Circle. Ils partagent une méthode de classe parent calculateArea(), mais la sous-classe remplace cette méthode pour implémenter différents comportements de calcul de surface. 🎜🎜Conclusion : 🎜Cet article présente les concepts de base et la syntaxe commune de la programmation orientée objet en PHP, et fournit des exemples de code spécifiques. La programmation orientée objet est une méthode de programmation puissante qui peut améliorer la réutilisabilité et l’évolutivité du code. J'espère que les lecteurs pourront acquérir une compréhension plus approfondie de la programmation orientée objet grâce à cet article et pouvoir l'utiliser de manière flexible dans le développement réel. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn