开启辅助访问
帐号登录 |立即注册

认识PHP面向对象编程的概念 class:定义类

 
面向对象编程(Object Oriented Programming,OOP)是一种编程思想,在很多现代编程语言中都有面向对象编程的概念。
面向对象编程的思想就是把具有相似特性的事物抽象成类,通过对类的属性和方法的定义实现代码共用。将实现某一特定功能的代码部分进行封装,这样可被多处调用,而且封装的粒度越细小被重用的概率越大。而面向对象编程的继承性和多态性也提高了代码的重用率。总之,面向对象编程充分地体现了软件编程中的“高内聚,低耦合”的思想。

PHP 之所以能够成为 Web 开发领域的主流语言,对面向对象开发模式的支持也是重要原因之一。
1、定义类

在 PHP 中,可以使用 class 关键字加类名的方式定义一个类,然后用大括号{ }将在类体中定义类的属性和方法包裹起来,类的语法格式如下:
[修饰类的关键字] class 类名{
    类的属性和方法;
}
修饰类的关键字是一个可选参数,可以省略。我们通常使用下面这些关键字来修饰类:
abstract:抽象类或方法,被修饰为抽象类之后,类将不能被实例化,但可以被继承。如果类中有至少一个方法被声明为抽象的,那么这个类也必须声明为抽象的。继承一个抽象类的时候,子类必须重新定义父类中的所有抽象方法,而且这些方法的访问控制必须和父类中一样。
final:使用 final 修饰的类不能被继承,而使用 final 修饰的方法不能在子类中重新定义。


2、成员属性

访问权限修饰符 属性名称 = 属性值;
在类中声明成员属性时,变量前面一定要使用一个关键字来修饰。
常用访问权限修饰符及其含义如下所示:
public:公共的,在类的内部、子类中或者类的外部都可以使用,不受限制;
protected:受保护的,在类的内部和子类中可以使用,但不能在类的外部使用;
private:私有的,只能在类的内部使用,在类的外部或子类中都无法使用。
【示例】创建一个 Students 类并在类中声明一些成员属性,代码如下所示:
<?php
    class Students{
        var $name;//如果不需要有特定意义的修饰,可以使用“var”关键字,一旦成员属性有其他的关键字修饰就需要去掉“var”。
        public $age;
        private $sex;
        public static $school;
    }
?>

3、成员方法
[权限修饰符] function 方法名 (类型 参数1, 类型 参数2, ..., 类型 参数n) {
   ... ...

}
成员方法的声明和函数的声明完全一样,只不过在声明成员方法时可以在function关键字的前面加一些访问权限修饰符来控制访问权限,例如 public、private、protected 等。
成员方法前面的权限修饰符可以省略,省略后默认权限为 public。
【示例】在上面示例中创建的 Students 类中创建一些成员方法。
<?php
    class Students{
        var $name;
        public $age;
        private $sex;
        public static $school;
        public function Write(){
           
        }
        protected static function Read(){
        }
        function Listen(){
           
        }
    }
?>
在 PHP7 中,引入了类型声明,我们可以为成员方法的形参和返回值声明类型,格式如下所示:
[权限修饰符] function 方法名 (类型 参数1, 类型 参数2, ..., 类型 参数n) : 返回值类型 {
    ... ...
}

PHP7 中支持声明的参数类型包括整型、浮点型、字符串型和布尔类型。示例代码如下所示:
纯文本复制
<?php
    class Students{
        var $name;
        public $age;
        private $sex;
        public static $school;
        public function Write(string $a, int $b):bool{
           
        }
        protected static function Read(string $str):int{
        }
        function Listen(int $num):bool{
        }
    }

?>

回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。