php面向对象程序设计介绍

 更新时间:2023年04月07日 09:48:08   作者:PHP隔壁老王邻居  
在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象

PHP是一种面向对象的编程语言,它允许开发者使用面向对象的编程技术来构建复杂的应用程序。下面是一些关于PHP面向对象编程的讲解:

类与对象

类是一种用于定义对象的蓝图,它描述了对象的属性和方法。对象则是类的一个实例,它具有类中定义的属性和方法。 在PHP中,使用class关键字来定义一个类,例如:

<?php
class Person {
    public $name;
    public $age;
    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
    function sayHello() {
        echo "Hello, my name is " . $this->name;
    }
}

上面的代码定义了一个名为Person的类,它有两个属性$name$age,和一个构造函数__construct(),以及一个方法sayHello()。 我们可以使用new关键字来创建一个类的实例,例如:

<?php
$person1 = new Person("John", 30);

上面的代码创建了一个Person类的实例$person1,并将其属性$name设为John,属性$age设为30。 我们可以使用箭头符号->来调用对象的属性和方法,例如:

<?php
echo $person1->name; // 输出 "John"
$person1->sayHello(); // 输出 "Hello, my name is John"

访问控制

PHP提供了三种访问控制关键字来限制类的属性和方法的访问权限,它们分别是publicprotectedprivate

  • public:公共的属性和方法可以被类的实例、类的子类和其他代码访问。
  • protected:受保护的属性和方法可以被类的实例和类的子类访问,但不能被其他代码访问。
  • private:私有的属性和方法只能被类的实例访问,不能被类的子类和其他代码访问。 例如:
<?php
class Person {
    public $name;
    protected $age;
    private $email;
    function __construct($name, $age, $email) {
        $this->name = $name;
        $this->age = $age;
        $this->email = $email;
    }
    public function sayHello() {
        echo "Hello, my name is " . $this->name;
    }
    protected function getAge() {
        return $this->age;
    }
    private function getEmail() {
        return $this->email;
    }
}

上面的代码定义了一个Person类,其中$name属性是公共的,$age属性是受保护的,$email属性是私有的。sayHello()方法是公共的,getAge()方法是受保护的,getEmail()方法是私有的。

继承

继承是面向对象编程的重要概念之一,它允许我们创建一个新的类,并从一个已有的类中继承属性和方法。继承可以减少代码的重复,增强代码的可维护性和可扩展性。 在PHP中,使用extends关键字来继承一个类,例如:

<?php
class Student extends Person {
    public $major;
    function __construct($name, $age, $email, $major) {
        parent::__construct($name, $age, $email);
        $this->major = $major;
    }
    public function sayHello() {
        echo "Hello, my name is " . $this->name . " and I'm a student.";
    }
}

上面的代码定义了一个Student类,它继承自Person类,并添加了一个$major属性。它还重写了sayHello()方法,以便在输出中添加学生的身份信息。 在子类的构造函数中,我们可以使用parent::__construct()来调用父类的构造函数,以便初始化继承的属性。

多态

多态是面向对象编程的另一个重要概念,它允许我们使用一个基类类型的变量来引用子类对象,从而实现代码的通用性和灵活性。 在PHP中,多态可以通过类型提示和抽象类来实现。 类型提示是一种语法,它允许我们在函数或方法的参数中指定参数的类型,从而限制参数的类型,并提高代码的可读性和可维护性。例如:

<?php
function sayHello(Person $person) {
    $person->sayHello();
}

上面的代码定义了一个sayHello()函数,它接受一个Person类型的参数。由于Student类继承自Person类,所以我们可以将一个Student类的实例作为参数传递给sayHello()函数。 抽象类是一种特殊的类,它不能被实例化,只能被用来继承。抽象类中可以定义抽象方法,这些方法没有具体的实现,只是用来规定子类必须实现的方法。例如:

<?php
abstract class Shape {
    abstract public function area();
}
class Rectangle extends Shape {
    private $width;
    private $height;
    function __construct($width, $height) {
        $this->width = $width;
        $this->height = $height;
    }
    public function area() {
        return $this->width * $this->height;
    }
}

上面的代码定义了一个抽象类Shape,它有一个抽象方法area()Rectangle类继承自Shape类,并实现了area()方法。 我们可以使用多态来实现一个通用的计算面积的函数,例如:

<?php
function getArea(Shape $shape) {
    return $shape->area();
}
$rectangle = new Rectangle(10, 20);
echo getArea($rectangle); // 输出 "200"

上面的代码定义了一个getArea()函数,它接受一个Shape类型的参数,并调用该参数的area()方法来计算面积。我们可以将一个Rectangle类的实例作为参数传递给getArea()函数。

到此这篇关于php面向对象程序设计介绍的文章就介绍到这了,更多相关php面向对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHP实现货币换算的方法

    PHP实现货币换算的方法

    这篇文章主要介绍了PHP实现货币换算的方法,以实例形式较为详细的讲述了货币转换的实现方法,并举英镑转换美元为例讲述具体用法,需要的朋友可以参考下
    2014-11-11
  • php MySQL与分页效率

    php MySQL与分页效率

    作者:老王 如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。
    2008-06-06
  • PHP扩展之kafka安装应用案例详解

    PHP扩展之kafka安装应用案例详解

    这篇文章主要介绍了PHP扩展之kafka安装应用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • php实现无限级分类实现代码(递归方法)

    php实现无限级分类实现代码(递归方法)

    近期做的一个网站需要一个无限级下拉列表的无限级分级功能,于是就有了下面的作品。
    2011-01-01
  • PHP使用get_headers函数判断远程文件是否存在的方法

    PHP使用get_headers函数判断远程文件是否存在的方法

    这篇文章主要介绍了PHP使用get_headers函数判断远程文件是否存在的方法,以实例形式分析了使用get_headers函数对远程文件是否存在进行判断的方法,以及针对重定向的排除方法,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • php根据用户名和手机号查询是否存在手机号码

    php根据用户名和手机号查询是否存在手机号码

    本文主要分享了php根据用户名和手机号查询是否存在手机号码的代码,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 用PHP函数解决SQL injection

    用PHP函数解决SQL injection

    用PHP函数解决SQL injection...
    2006-12-12
  • PHP入门之常量简介和系统常量

    PHP入门之常量简介和系统常量

    PHP常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)
    2014-05-05
  • PHP代码优化技巧小结

    PHP代码优化技巧小结

    我们在编写程序时,想要使自己的程序占用资源最小,运行速度更快,代码量更少。PHP独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法,它可以比 CGI或者Perl更快速的执行动态网页。PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高得多。
    2015-09-09
  • php中将一个对象保存到Session中的方法

    php中将一个对象保存到Session中的方法

    这篇文章主要介绍了php中将一个对象保存到Session中的方法,涉及php操作对象及session的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论