banner

php中的封装、抽象、继承与多态

面向对象编程语言的四大特性: 封装、抽象、继承、多态。这是所有php开发者必须要熟悉的特性。在PHP中,我们知道,封装(Encapsulation)、抽象(Abstraction)、继承(Inheritance)和多态(Polymorphism)是面向对象编程(OOP)的四大基本特性。这些特性为代码的可维护性、可扩展性和重用性提供了强大的支持。

封装是指隐藏对象的内部状态(属性)和实现细节(方法),仅通过公共接口(通常是公共方法)与外界交互。这有助于保护对象的状态不被外部代码随意修改,同时提供了清晰的接口来访问和修改对象的状态。


class Person {  
    private $name; // 私有属性,只能在类内部访问  
    private $age;  
    public function __construct($name, $age) {  
        $this->name = $name;  
        $this->age = $age;  
    }  
    public function getName() { // 公共方法,用于获取私有属性的值  
        return $this->name;  
    }  
    public function setAge($age) { // 公共方法,用于设置私有属性的值  
        if ($age >= 0) {  
            $this->age = $age;  
        } else {  
            echo "Age cannot be negative!";  
        }  
    }  
}

抽象是一种简化复杂事物的方式,它只展示必要的信息而隐藏不必要的细节。在PHP中,抽象类(abstract class)和抽象方法(abstract method)是实现抽象的关键概念。抽象类不能被实例化,只能被其他类继承。抽象方法是一种在抽象类中声明但没有实现的方法,子类必须实现抽象类中的所有抽象方法才能被实例化。


abstract class Animal {  
    abstract public function speak(); // 抽象方法  
}  
class Dog extends Animal {  
    public function speak() {  
        echo "The dog barks.";  
    }  
}

继承是面向对象编程中创建新类的一种方式,它允许一个类(子类)继承另一个类(父类)的属性和方法。这样,子类就可以重用父类的代码,并且可以添加或覆盖父类的属性和方法。


class Animal {  
    public function makeSound() {  
        echo "The animal makes a sound.";  
    }  
}  
class Dog extends Animal {  
    // Dog 类继承了 Animal 类的 makeSound 方法  
}  
$dog = new Dog();  
$dog->makeSound(); // 输出 "The animal makes a sound."

设计模式的精髓是对多态的使用。多态是指允许一个接口被多种数据类型实现,或者一个接口有多个实现方式。在PHP中,多态通常通过方法重写(子类覆盖父类的方法)和接口实现(类实现接口并定义接口中所有方法的具体实现)来实现。多态允许我们在不知道对象具体类型的情况下,通过对象调用的方法来执行不同的行为。


interface Speakable {  
    public function speak();  
}  
class Dog implements Speakable {  
    public function speak() {  
        echo "The dog barks.";  
    }  
}  
class Cat implements Speakable {  
    public function speak() {  
        echo "The cat meows.";  
    }  
}  
function animalSpeak(Speakable $animal) {  
    $animal->speak();  
}  
$dog = new Dog();  
$cat = new Cat();  
animalSpeak($dog); // 输出 "The dog barks."  
animalSpeak($cat); // 输出 "The cat meows."

在这个例子中,Speakable 接口被 Dog 和 Cat 两个类实现,每个类都提供了 speak() 方法的具体实现。animalSpeak() 函数接受一个实现了 Speakable 接口的对象,并根据对象的实际类型调用相应的 speak() 方法,这就是多态的体现。

wordpress

WordPress中的后台增加子菜单到现有系统菜单里

wordpress中有许多的函数我们需要熟稔于心。需要说明的是该方式语法与add_menu_page语法完全相同,不再赘述。但仅可以增加子菜单到对应系统内置的菜单,无法为自定义菜单增加子菜单。

0
Would love your thoughts, please comment.x
()
x
Scroll to Top