程序员让前端飞

php面向对象

2017-11-25  本文已影响0人  马大哈tt

面向对象在很多语言,如c,java,c++,c#等语言中都有,它与面向过程的区别在于:面向过程实现功能时使用几十个代码块,而面向对象可以使用一个广泛的代码块实现功能。
在分享php的面向对象之前我们先来看看js的面向对象,他们的写法都相同之处,我们可以对比着学习。

js的面向对象

js的面向对象首先定义一个函数,函数名首字母要大写,是习惯规定。传入参数,函数里面的this指向这个函数,定义函数的name,age属性,也可以定义一个函数。然后实例化对象,传参传入相应的值,js还可以直接用 对象名.属性 来设置属性。


function Mylover(name,age){
        this.name = name;
        this.age = age;
        this.shop = function(){}
    }
// 创建一个对象
    var _mylover = new Mylover("wss",19);
// 给对象一个属性like

    _mylover.like = "打游戏";
    console.log(_mylover);

打印的Mylover对象如下:


js.png

php的面向对象

  1. 首先定义一个类
    使用public,protected,private来定义属性,类里面可以定义一个方法。
    构造函数: __construct前面是两个下划线,作用是:实例化的类的时候,会自动执行。一般用于类的初始化,比如给属性赋值
// 定义对象 class
class Student{
              // 属性
        public $name;
        public $age;
        public $sex;
                // 定义一个方法
        public function study(){
            echo "数学";
        }
              // 构造函数 __construct
        public function __construct($name,$age,$sex){
            $this->name = $name;
            $this->sex = $sex;
            $this->age = $age;
        }
    }
  1. 实例化类
    $Student称为类Student的实例
$Student = new Student("ltt","22","女");
  1. 对象的属性和方法
    使用 -> 符号执行对象的方法或者属性
$Student->study();
  1. 类的继承
    上面定义了一个Student类,现在再定义一个大学生类,这个肯定有些属性和学生类相同,但肯定也有一些自己独特的属性,比如:学分(score)。
    使用 extends 关键字继承Student的类。析构函数里,继承Student类里的方法使用关键字 parent::这样Bigstudent就继承了Student里的$name,$sex,$age三个类。
class Bigstudent extends Student{
        public $score;
        public function __construct($name,$sex,$age,$score){
            parent::__construct($name,$sex,$age);
            $this->score = $score;
        }
    }

下面实例化Bigstudent
Bigstudent是子类,Student是父类;子类:就是继承父类,通过继承,子类可以获得父类的属性与方法。

$s1 = new Bigstudent("张三","男","18","80");
    $s1->study();
    echo $s1->name.$s1->sex.$s1->age.$s1->score;

结果图:


结果图.png
  1. public、protected、private
上一篇 下一篇

猜你喜欢

热点阅读