基础知识

一、面向对象

  1、面向对象的学习

    1)语法的学习

      OOP(面向对象的编程)

    2)思想的学习

      OOA(面向对象的分析)

      OOD(面向对象的设计)

  2、什么是面向对象

    1)操作对象

    2)从程序的执行者变成了程序的管理者

  3、什么是对象

    1)万物皆对象

    2)实实在在的一个独立个体

  4、面向对象的目标

    1)解决面向过程的缺陷(包括:代码冗余较大、不利于协同开发、开发效率极低、代码维护困难、程序的扩展性差)

    2)达到高可扩展性、高可重用性、高灵活性、高内聚(内部联系)、低耦合(外部联系)

  5、面向对象的特点

    封装、继承、多态

  6、对象的组成

    1)成员属性(描述)

    2)成员方法(功能、行为)

二、类

  1、什么是类

    类是具有相同属性和相同行为的对象的一类总称

  2、类和对象的关系

    1)先有类,再有对象

    2)类是用来描述对象的

    3)类是对象的抽象化

    4)对象是类的实例化

  3、类的组成部分

    成员属性(一个成员属性就是一个变量)

    成员方法(一个成员方法就是一个函数)

  4、如何声明一个类

    1)简单格式:

      class 类名{

        [成员属性]  //也叫成员变量

        [成员方法]  //也叫成员函数

      }

    2)完整格式:

      class 类名 [extends 父类] [implements 接口1[,接口2...]]{

        [成员属性]

        [成员方法]

      }

    类的声明需要注意的:

      1.成员属性的声明,属性前必须要有修饰符

        修饰符 $变量名[=默认值];

        常用属性修饰符:publicprotectedprivatestaticvar

      2.成员属性可以不给默认值

      3.成员属性就是一个变量,其默认值不可以是另一个变量名、带运算符的表达式、方法或函数调用

        public $var1=1+2;  //错误格式

        public $var2=self::myStaticMethod();  //错误格式

        public $var3=$var4;  //错误格式

      4.成员方法的声明,可以没有修饰符,也可以没有返回值

        [修饰符] function 方法名(参数1,...){

          [方法体]

          [return 返回值]

        }

        修饰符:publicprotectedprivatestaticabstractfinal

      5.成员方法就是一个函数,必须和对象相关不能是一些无意义的操作

三、通过类实例化对象

  1、对象的实例化

    1)需要通过类来进行实例化对象:

      $对象名称=new 类名称();

      $对象名称=new 类名称([参数1,...]);

    2)成员属性和成员方法都必须藉由该对象来进行访问、调用

    3)对象的访问须使用 -> 来访问

    4)类的名称不区分大小写

    5)类可以在任意位置调用

      例:     

    class Person{
        //[成员属性]
        //姓名
        var $name;
        //性别
        var $sex;
        //年龄
        var $age;

        //[成员方法]
        //吃饭
        function eat(){
            echo "爱吃肉";
        }
        //睡觉
        function sleeep(){
            echo "爱睡懒觉";
        }
        //说话
        function speak(){
            echo "不爱BB";
        }

    }


    $person=new Person;
    $person->name="autumn";
    $person->sex="X";
    $person->age=25;

    echo "<pre>";
    var_dump($person);
    echo "</pre>";

    echo $person->name.$person->sex.$person->age.$person->eat().$person->sleeep().$person->speak();
object(Person)#1 (3) {
  ["name"]=>
  string(6) "autumn"
  ["sex"]=>
  string(1) "X"
  ["age"]=>
  int(25)
}

爱吃肉爱睡懒觉不爱BBautumnX25

  2、$this 关键字

    1)$this就代表本对象

    2)$this只能在类的内部去使用

    3)$this可以在类中调用本对象自己的成员属性和成员方法

    4)在类的内部的多个成员方法中利用“return $this;”即可实现链式操作

      例1:

class Person{
    //[成员属性]
    //姓名
    var $name;
    //性别
    var $sex;
    //年龄
    var $age;

    //[成员方法]
    function info(){
        echo "姓名:".$this->name."性别:".$this->sex."年龄:".$this->age;
    }
}


$p1=new Person;
$p1->name="admin1";
$p1->sex="男";
$p1->age=20;
$p1->info();

echo "<hr>";

$p2=new Person;
$p2->name="admin2";
$p2->sex="女";
$p2->age=25;
$p2->info();

echo "<hr>";

$p3=new Person;
$p3->name="admin3";
$p3->sex="男";
$p3->age=30;
$p3->info();

姓名:admin1性别:男年龄:20


姓名:admin2性别:女年龄:25


姓名:admin3性别:男年龄:30

      例2:  

class Person{
    //[成员属性]
    //姓名
    var $name;
    //性别
    var $sex;
    //年龄
    var $age;

    //[成员方法]
    function eat(){
        echo "吃晚饭";
        return $this;
    }
    function speak(){
        echo "不爱BB";
        return $this;
    }
    function sleeep(){
        echo "上床睡觉";
        return $this;
    }
    function offlights(){
        echo "关灯";
        $this->speak();
    }
}

$person=new Person;

$person->eat()->speak()->sleeep()->offlights();

吃晚饭不爱BB上床睡觉关灯不爱BB

  3、构造方法

    方法一:

      方法名称与类名称相同的方法,PHP4及以下版本仅支持此方法:

      class 类名{

        [成员属性]

        [成员方法]

        function 与类名相同([参数1,...]){

        }

      }

    方法二:

      __construct 替代方法名称,PHP5及以上版本新增,系统会默认优先选择此方法,推荐使用

      class 类名{

        [成员属性]

        [成员方法]

        function __construct([参数1,...]){

        }

      }

    参数:不定

    触发时机:当对象new实例化的一瞬间自动调用这个方法

    作用:对成员进行初始化操作

    例:

class Person{
    //[成员属性]
    //姓名
    var $name;
    //性别
    var $sex;
    //年龄
    var $age;

    //[成员方法]
    //PHP4及以下版本支持
    function Person($name,$sex,$age){
        $this->name=$name;  //对成员属性$name进行赋值
        $this->sex=$sex;  //对成员属性$sex进行赋值
        $this->age=$age;  //对成员属性$age进行赋值
        echo "姓名:".$this->name.";性别:".$this->sex.";年龄:".$this->age.";";
    }

    //PHP5及以上版本支持,系统默认优先选择此方法
    function __construct($name,$sex,$age){
        $this->name=$name;  //对成员属性$name进行赋值
        $this->sex=$sex;  //对成员属性$sex进行赋值
        $this->age=$age;  //对成员属性$age进行赋值
        echo "姓名:".$this->name.";性别:".$this->sex.";年龄:".$this->age.";";
    }
}

$person=new Person("autumn","男",25);

  4、析构方法

    方法:__destruct 替代方法名称

      class 类名{

        [成员属性]

        [成员方法]

        function __destruct(){

        }

      }

    参数:无

    触发时机:当对象销毁的一瞬间自动调用析构方法

    作用:做程序的后续操作,如关闭文件、释放结果集等

    例: 

class Person{
    //[成员属性]
    //姓名
    var $name;
    //性别
    var $sex;
    //年龄
    var $age;

    //[成员方法]
    function __construct($name,$sex,$age){
        $this->name=$name;  //对成员属性$name进行赋值
        $this->sex=$sex;  //对成员属性$sex进行赋值
        $this->age=$age;  //对成员属性$age进行赋值
        echo "姓名:".$this->name.";性别:".$this->sex.";年龄:".$this->age.";";
    }

    //在对象被销毁的一瞬间自动调用析构方法
    function __destruct(){
        echo $this->name." 被析构啦!<br>";
    }
}

//先实例化的对象,其对应的保存变量在栈中先入栈,销毁时后入栈的先销毁
//对应的,后实例化对象先调用析构
$p1=new Person("admin01","男",20);
echo "<br>";
$p2=new Person("admin02","女",25);
echo "<br>";
$p3=new Person("admin03","男",30);
echo "<br>";

姓名:admin01;性别:男;年龄:20;
姓名:admin02;性别:女;年龄:25;
姓名:admin03;性别:男;年龄:30;
admin03 被析构啦!
admin02 被析构啦!
admin01 被析构啦!

原文地址:https://www.cnblogs.com/zhouwanqiu/p/9409488.html