php基础08_php面向对象

一面向对象编程

OOP(Object-Oriented Programming)

OOP达到了软件工程的三个目标:重用性、灵活性和扩展性。

采用面向对象方法可以使系统各部分各司其职、各尽所能; 使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。

(class)

日常环境由无数实体组成:植物,人群,交通工具,食物...

    每个实体都由一组性质和行为来定义。

    例如: 男人 可以定义有:身高,体重,是否帅,肤色等性质,并且定义有能赚钱,能下厨,能开车等行为。在OOP术语中,实体的性质和行为的具体定义称为类

对象 (object)

通过类创建出来的实体称为对象。

对象是系统中用来描述客观事物的一个实体。

它是构成系统的一个基本单位,数据与代码都被捆绑在一个实体中。一个对象由一组属性和对这组属性进行操作的一组行为组成。

php面向对象

1、定义类

class name {}

2.创建对象(实例化)

$obj = new name();

3.访问对象中的成员

$obj->attr;

4.const常量

可以在类中定义常量,即不会在类中改变的值。对于从该类实例化的任何对象来说,常量值在这些对象的整个生命周期中都保持不变。

echo self::PI; //类内部访问

echo 类名::PI; //类外部访问  

5.static静态属性与静态方法

使用static 关键字可以用来标识成员属性,也可以用来标识成员方法,

静态的成员属于类所有,所以我们在静态方法里,不能使用$this 来引用 静态成员,建议使用 self 关键字来调用。

class Person{
    const attr = "常量";//常量不需加$
    static $name = "小明";//静态属性
    public $age = "18";//公共属性

    function show(){
        //常量和静态用self输出,公共的外部用this输出
        echo self::attr;//常量用self
        echo self::$name;//静态用self
        echo $this->age;//公共属性用this
        //this.age  
    }
}
$obj = new Person();//创建对象
$obj->show();//访问对象方法,输出常量小明18
echo $obj->age;//公共的外部用$obj可以访问,输出18
echo Person::attr;//外部获取常量需要用类名获取,输出常量
echo Person::$name;//外部获取静态变量需要用类名获取,输出小明
//类无法传参

三构造函数和析构函数

1.构造函数

通常用来对成员属性进行初始化赋值

__construct($name,$age)

2.析构函数

与构造方法对应的就是析构方法,析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。析构函数不能带有任何参数,其名称必须是 __destruct()

class Person{
   //构造函数,对成员初始化,this.name = $name
   function __construct($name){
       $this->name = $name;
   }
    //类方法this.name
   function show(){
       echo $this->name;
   }
    //析构函数
   function __destruct(){
       echo "结束了";
   }
}
$obj = new Person("小明");//实例
$obj->show();//小明,此时类未销毁
$obj->show();//小明结束了,执行完访问方法之后,后面没有代码执行析构函数
四访问修饰符

访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5的新特性。

1.public 公共修饰符

类的成员将没有访问限制,所有的外部成员都可以访问(读和写)这个类成员。

在属性或方法前面加上关键字public,或不加任何关键字,都可以声明一个公共属性或方法。

2.private 私有修饰符

被定义为private的成员,对于同一个类里的所有成员是可见的,即没有访问限制;但对于该类的外部代码是不允许改变甚至读操作,对于该类的子类,也不能访问。

3.protected 保护修饰符

被修饰为protected的成员不能被该类的外部代码访问。但是对于该类的直接子类有访问权限,可以进行属性、方法的读及写操作。

被子类继承的protected成员,在子类外部同样不能被访问

class Person{
    public $a = "公共";
    private $b = "私有";
    protected $c = "保护";
    //类方法
    function show(){
        echo $this->a."<br>";
        echo $this->b."<br>";
        echo $this->c."<br>";
    }
}
$obj = new Person();
$obj->show();//内部调用会全部输出,外部调用私有会报错
/*
公共
私有
保护
 */
//echo $obj->b;//外部访问报错
//echo $obj->c;//外部访问报错

//继承
class Son extends Person{
    function show()
    {
        echo $this->a."<br>";
//        echo $this->b."<br>";//私有的继承不可以访问
        echo $this->c."<br>";
    }
}
$obj = new Son();
$obj->show();//私有的报错
echo $obj->a;//继承公共外部可以访问
/*
公共
私有
公共
 */

五封装

封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节

六继承

面向对象开发方法建立在继承概念的基础上,这种策略提高了代码的重用性。

PHP中,类继承通过 extends 关键字实现;

继承自其他类的类称为子类(child class subclass

子类所继承的类称为父类( parent class) 或 基类 (base class)

七多态

对象的多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值