php面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php面向对象相关的知识,希望对你有一定的参考价值。

1. 学习面向对象的目标:
  a) 语法的学习:
  b) 编程思想的学习:
    i. 过程化:
    ii. 面向对象:
2. 比较(有对象和没对象的区别)
  a) 没对象:
    i. 我饿了 自己做饭
    ii. 我渴了 自己烧水
    iii. 衣服脏了 自己去洗衣服
    iv. 空虚寂寞了 自己去玩LOL
  b) 有对象
    i. 我饿了 对象给我去做饭
    ii. 我渴了 对象给我去烧水
    iii. 我衣服脏了 对象给我去洗衣服
    iv. 我空虚寂寞了 对象和我一块玩LOL游戏
  c) 面向对象的核心,就是让对象帮我们去实现指定的功能
3. 对象:具有一定功能和特征的单个事物,称之为对象
  a) 对象是实际存在的一个事物
4. 类:具有相同功能和特征的对象的抽象,称之为类
5. 类和对象的关系:
  a) 类的实体化(实例化)就是一个对象
  b) 对象的抽象就是类
6. 类比:
  a) 马良 马良画的画 从画中走出来的人
  b) 程序员 类 对象
  c) 设计师 设计的图纸 由设计稿建造出来的建筑
7. 如何来声明一个类:(相当于正在设计图纸)
  a) 格式:class 类名{}
  b) 命名:首字母大写的驼峰命名法进行命名
  c) 标识符命名规则:字母、数字、下划线,首字母不能为数字,严格区分大小写,且不能使用关键字
  d) 声明成员属性:
    i. 注意:
      1. 必须给定成员修饰符(Public、Protected、Private)
      2. 成员属性的默认值(初始值)可以不给
      3. 成员属性赋初始值时
        a) 不能使用变量赋值
        b) 建议不要使用计算来给成员属性赋值
        c) 不能使用函数调用方式给成员属性赋值
      4. 变量的数据类型:
        a) 四种标量:整型、浮点型、字符串型、布尔型
        b) 两种复合:对象、数组
        c) 两种特殊:资源、null空
      5. 常量可以存放的数据类型:
        a) 4中标量类型和null空型
  e) 成员方法的声明:
    i. 注意
      1. 成员方法就是一个函数,在类当中我们称之为方法
      2. 跟成员属性的声明方式类似,成员方法,也需要给定一个成员修饰符(public、protected、private)
      3. 成员方法的参数是可有可无的
      4. 成员方法的返回值和代码体都是可有可无的!
      5. 函数在我们不指定return的时候,或者说,给定return但是后面没有值的情况下,返回的结果都是null
  f) 类当中只能存在成员属性和成员方法,之外的内容都会报错!
  g) 成员属性和成员方法的位置不固定,但是建议将成员属性写在前面
8. 对象的实例化:
  a) 格式:变量名 =new 类名()

   Object => 变量的类型
   (Meinv) => 类名
    [1] => 在当前脚本当中所实例化对象的索引号

 1 //声明一个美女类(相当于设计的过程)
 2 class Meinv{
 3     
 4     //特征 => 成员属性
 5     public $name;
 6     public $sex;
 7     public $age=18;
 8     public $tall;
 9     
10     //功能 => 成员方法
11     public function eat(){
12         echo \'我正在吃东西!\';
13     }
14     
15     public function drink(){
16         echo \'我正在喝东西\';
17     }
18     
19     public function talk($someone){
20         echo \'我正在和\'.$someone.\'说话!\';
21     }
22 }
23 
24 //实例化(实体化)
25 $lingling = new Meinv();
26 
27 //成员属性的操作
28 $lingling->name = \'玲玲\';
29 $lingling->sex = \'女\';
30 $lingling->age = 20;
31 $lingling->tall = 160.00;
32 
33 var_dump($lingling);
34 
35 //结果
36 object(Meinv)[1]
37   public \'name\' => string \'玲玲\' (length=6)
38   public \'sex\' => string \'女\' (length=3)
39   public \'age\' => int 20
40   public \'tall\' => float 160

  b) 注意:
    i. 类名后面的小括号可有可无,但是我们建议加上
    ii. 对象的实例化可以在类的声明之前,也可以在类的声明之后
    iii. 成员访问符: ->

 1 //声明一个手机类
 2 
 3 class Phone{
 4     
 5     //成员属性
 6     public $brand;
 7     public $size;
 8     public $color;
 9     
10     //成员方法
11     public function call($someone){
12         echo \'我正在给\'.$someone.\'打电话<br/>\';
13     }
14     
15     public function sendMessage($someone){
16         echo \'我正在给\'.$someone.\'发短信<br/>\';
17     }
18     
19 }
20 
21 //实例化类
22 $apple = new Phone();
23 
24 //初始化成员属性信息
25 $apple->brand = \'苹果\';
26 $apple->size = \'4.7inch\';
27 $apple->color = \'红色\';
28 
29 //进行成员属性的操作
30     //成员属性的添加
31     $apple->price = \'5799元\';
32     //成员属性的删除
33     // unset($apple->color);
34     //成员属性的修改
35     $apple->size = \'5.5inch\';
36     //成员属性的访问
37     echo $apple->brand;        //苹果
38     echo $apple->size;        //5.5inch
39     echo $apple->price;        //5799元
40     
41 //进行成员方法的操作
42 $apple->call(\'范冰冰\');        //我正在给范冰冰打电话
43 $apple->sendMessage(\'李冰冰\');        //我正在给李冰冰发短信

9. $this 特殊的变量
  a) 名字特殊
  b) 只能在类的内部当中的成员方法中使用
  c) $this 代表了正在访问当前方法的对象
10. 构造方法:
  a) 本质:也是一个成员方法,是一个特殊的成员方法
  b) 名字:__construct、和类名同名的方法都属于构造方法,我们推荐使用__construct;
  c) 执行场景:当我们实例化一个类时,会自动调用__construct方法
  d) 作用:初始化对象
11. 析构方法:
  a) 本质:也是一个成员方法,是一个特殊的成员方法
  b) 名字:__destruct
  c) 执行场景:当我们对象被销毁的时候,自动执行

 1 //声明一个汽车类
 2 class car{
 3     
 4     //成员属性
 5     public $brand;
 6     public $type;
 7     public $price;
 8     
 9     //成员方法
10     public function __construct($brand,$type,$price){
11         //给成员属性赋值
12         $this->brand = $brand;
13         $this->type = $type;
14         $this->price = $price;
15         
16         echo $this->brand.\'创建<br/>\';
17     }
18     
19     public function drive(){
20         echo \'我正在开车,么么哒!!\';
21     }
22     
23     public function carry($someone){
24         echo \'我正在载着\'.$someone.\'找女朋友!\';
25     }
26     
27     //析构方法,当我们的脚本执行完毕时会自动执行
28     public function __destruct(){
29         echo $this->brand.\'销毁<br/>\';
30     }
31     
32 }
33 
34 //实例化一个奔驰车
35 $benz = new car(\'奔驰\',\'越野\',\'200w\');
36 
37 $baoma = new car(\'宝马\',\'敞篷\',\'180w\');
38 
39 //结果
40 奔驰创建
41 宝马创建
42 宝马销毁
43 奔驰销毁

以上是关于php面向对象的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

php面向对象之一

代码学习PHP面向对象之类与对象

Php 面向对象

php面向对象编程

PHP面向对象接口部分基础代码