PHP前置基础知识

PHP面向对象

理解面向对象与面向过程

程序开发 :
面向过程 vs 面向对象

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把问题中的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

通俗点说就是:
如果要你去设计一个棋局的话:
面向对象可能是这样的:
黑棋和红棋对象:负责棋子的走向,两者行为相同
棋盘系统:通过黑棋和红棋对象的行为展示棋局情况
规则系统:判断“战场”的变化以及胜负等

面向过程可能是这样的:
开始游戏,红棋先走
展示棋局情况
判断战况(是否有棋子被吃、胜负情况)
黑棋接着走
展示棋局情况
判断战况(是否有棋子被吃、胜负情况)
所以可以看出来,面向对象把问题中的事务分解成了各个对象,每个对象有自己的任务,而面向过程是通过实现解决问题的每一个步骤去解决问题。

优缺点

面向对象
优点:易维护、复用、扩展,
由于面向对象所具有的封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活

缺点:性能比面向过程低
面向过程
优点:性能比面向对象高,
因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

类的定义

类是定义了一件事物的抽象特点,它将数据的形式以及这些数据上的操作封装在一起。
对象是具有类类型的变量,是对类的实例。

内部构成 : 成员变量(属性) + 成员函数(方法)

成员变量 (属性)
定义在类内部的变量。
该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。
成员函数 (方法)
定义在类的内部,
可用于访问对象的数据。

继承

继承:继承性是子类自动共享父类数据结构和方法的机制,是类之间的一种关系。
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把一个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

父类: 一个类被某它类继承,可将该类成为父类,或基类,超类。
子类: 一个类继承其他类称为子类,也可称为派生类。

类与对象

类的结构

类 : 定义类名 ,定义成员变量(属性) ,定义成员函数(方法)

image.png

类的内容

创建一个类 :
<?php
class class_name{
var $name; // 还没有赋值
var $sex ;
function cy($var1){
echo $this->name;
echo $var1;
}
}
?>
定于(类名) {
//声明成员变量
var 为一种修饰符
//声明成员函数 (方法)
使用预定义%this 调用成员变量
成员函数传参$var1 可直接调用
}

实例化和赋值

image.png

<?php
  class class_name{
  var $name = 'test';
  var $sex ;
function cy($var1){
  echo $this->name;
  echo "<br>";
  echo '这个是'.$var1;
}
}

$a  = new class_name();       //实例化class_name 为对象  a 
$a->name = '测试';  //赋值
$a->sex = '女';    //赋值
$a->cy('成员方法');      //调用 cy函数 值为成员方法

var_dump($a);   

echo "以下是print_r 输出的 ";
echo "<br>";
print_r($a);
echo "<br>";
print_r($a->name);

?>

类的修饰符介绍

在类中直接声明的变量称为成员属性(也可以成为成员变量)可以在类中声明多个变量,即“对象”中可以有多个成员属性,每个变量都存储“对象”不同的属性信息。
访问权限修饰符:对属性的定义

常用访问权限修饰符:
public:公共的,在类的内部、子类中或者类的外部都可以使用,不受限制;
protected∶受保护的,在类的内部、子类中可以使用,但不能在类的外部使用;
private:私有的,只能在类的内部使用,在类的外部或者子类中都无法使用。

类的内部类的子类类的外部
public
protected×
private××

代码展示 :
image.png
下面 两个调用会报错
因为一个是受保护的 ,一个是私有的
,注释掉查看效果
image.png
不会报错

---------------------------------------
使用继承 再次尝试其他 两个保护的 和私有的
可见受保护的可正常输出, 私有的不行
image.png

<?php
// class class_name{
    // var $name = 'test';
    // var $sex ;
    // function cy($var1){
        // echo $this->name;
        // echo "<br>";
        // echo '这个是'.$var1;
    // }
// }
// 
// $a  = new class_name();       //实例化class_name 为对象  a 
// $a->name = '测试';  //赋值
// $a->sex = '女';    //赋值
// $a->cy('成员方法');      //调用 cy函数 值为成员方法
// 
// var_dump($a);   
// 
// echo "以下是print_r 输出的 ";
// echo "<br>";
// print_r($a);
// echo "<br>";
// print_r($a->name);
//

class hero{
    public $name = 'public';    //公共的
    private $sex = '男';        //私有的
    protected $shengao = '180';   // 受保护的 : 内部 子类可用

    function jion($var1){     //所有属性的变量全部可调用
        echo $this ->name;     
        echo $var1;
    }
}

class hero2 extends hero{
    function test(){
        echo $this->name;    //可用
        echo $this->sex;     //不可用
        echo $this->shengao;   //可用
    }
}
$tom = new hero();
// print_r($tom->name ) ;   //外部可用
echo $tom->name;
echo "<br>";
echo "以下是heroo2"."<br>";
// print_r($tom->sex);      //外部不可用
// print_r($tom->shengao);    //外部不可用
$tom2 = new hero2();
echo $tom2->test();

?>

类与对象
类是对象的抽象,而对象是类的具体实例。
类是想法,把类实例化(new),调用具体值后就变成了对象
类的成员方法
在类中定义的函数被称为成员方法。函数实现的是某个独立的功能;
成员方法实现的是类中的一个行为,是类的一部分。
可以在类中声明多个成员方法,成员方法的声明和函数声明完全一样,只不过在声明成员方法时可以在function关键字前加一些访问权限修饰符,如public、protected、private (可以省略,默认为public)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值