zoukankan      html  css  js  c++  java
  • PHP面向对象(一)

    一、概念:

      PHP5正式版引入面向对象的全部机制。

      面向对象程序设计(OOP):计算机程序时由单个能够起作用的单元或对象组合而成的,为了实现整体运算,每个对象都能够接收信息、处理数据和向其他对象发送信息。

      面向对象三个目标:重用性、灵活性和扩展性。

      面向对象的特点:封装、继承和多态。

      类:是一个独立的程序单位,是具有相同属性和服务的一组对象的集合。其内部包括成员属性和服务的方法两个主要部分。

      对象:系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和有权对这些属性进行操作的一组服务组成。

    二、类的声明:  关键字class

      语法格式:

      [修饰符] class 类名
      {
        【成员属性】定义变量

        【成员方法】定义函数
      }

     1 <?php
     2 class Student
     3     {
     4         //定义成员属性
     5         public $name;
     6         public $age;
     7         //定义成员方法
     8         public function sayHello()
     9         {
    10             echo "Hello World!";
    11         }
    12         
    13     }
    14 ?>

    三、实例化对象

      语法格式:$变量名 = new 类名称([参数列表]);

        或者:$变量名 = new 类名称;

     1 <?php
     2 class Student
     3     {
     4         //定义成员属性
     5         public $name;
     6         public $age;
     7         //定义成员方法
     8         public function sayHello()
     9         {
    10             echo "Hello World!";
    11         }
    12         
    13     }
    14 
    15 //实例化两个学生
    16     $stu1=new Student();  
    17     $stu2=new Student;
    18 
    19 ?>

      对象类型在内存中的分配:

        1)栈空间段:特点是空间小,但被CPU访问的速度快,用于存放程序中临时创建的变量。由于栈的后进先出特点,所以栈特别方便用来保存和恢复调用现场。【double、Boolean】

        2)堆空间段:堆用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减,用于存储数据长度可变或占内存比较大的数据。【字符串、数组、对象】

        3)初始化数据段:用来存放可执行文件中已初始化的全局变量,换句话说就是存放程序静态分配的变量。

        4)代码段:用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像。代码段需要防止在运行过程时被非法修改,所以只允许读取操作,而不允许写入(修改)操作。

      对象类型的数据是一种占用空间比较大的数据类型,并且是占用的空间不定长的数据类型,所以对象创建完成后被存在堆内存中,但对象的引用名称是存放在栈中里面的。

    四、对象中成员访问

      对象中包含成员属性和成员方法,访问对象中的成员则包括成员属性和成员方法的访问。特殊运算符“->”来完成对象成员的访问。

      语法格式:

        $引用名 = new 类名称([参数列表]);

        $引用名 -> 成员属性 = 值;

        echo $引用名 -> 成员属性;

        $引用名 -> 成员方法;

     1 <?php
     2 class Student
     3     {
     4         //定义成员属性
     5         public $name;
     6         public $age;
     7         //定义成员方法
     8         public function sayHello()
     9         {
    10             echo "Hello World!";
    11         }
    12         
    13     }
    14 
    15 //实例化
    16     $stu1=new Student();
    17     $stu2=new Student;
    18 
    19     $stu1->name = "张三";
    20     $stu1->age = 20;
    21     echo "我叫:{$stu1->name} 今年{$stu1->age}岁了!";
    22     $stu1->sayHello();
    23 
    24 ?>

      特殊的对象引用:$this

        对象一旦被创建,在对象中的每个成员方法里都存在一个特殊的对象引用“$this”。成员方法属于哪个对象,$this就代表哪个对象,专门用来完成内部对象成员之间的访问。

     1 <?php
     2 class Student
     3     {
     4         //定义成员属性
     5         public $name;
     6         public $age;
     7         //定义成员方法
     8         public function sayHello()
     9         {
    10             echo "我叫:{$this->name} 今年{$this->age}岁了!Hello World!<br>";
    11             
    12         }
    13         
    14     }
    15 
    16 //实例化
    17     $stu1=new Student();
    18     $stu2=new Student();
    19 
    20     $stu1->name = "张三";
    21     $stu1->age = 20;
    22     $stu1->sayHello();
    23 
    24     $stu1->name = "李四";
    25     $stu1->age = 22;
    26     $stu1->sayHello();
    27 
    28 ?>

    五、构造方法与析构方法

      构造方法和析构方法是对象中的两个特殊方法,他们都与对象的生命周期有关。构造方法是对象创建完成后第一个被对象自动调用的方法;而析构方法是对象在销毁之前最后一个被对象自动调用的方法。

      1)构造方法

        当创建一个对象时,构造方法就会被自动调用一次,即每次使用关键字new来实例化对象时都会自动调用构造方法,不能主动通过对象的引用调用构造方法。所以构造方法一般用来初始化任务。构造方法名称必须是“__construct()”。(PHP5的变化,在PHP5以前版本,构造方法必须和类名称相同,PHP5仍可用)

      语法格式:

        function __construct([参数列表])    //构造方法名称是以两个下划线开始的__construct()

        {

          #方法体  通常用来对成员变量赋初值

        }

      2)析构方法

        与构造方法向对应的就是析构方法,PHP将在对象被销毁前自动调用这个方法。析构方法允许在销毁一个对象之前执行一些特定操作,例如关闭文件,释放结果集等。析构方法名“__destruct()”,而且析构方法不能带有任何参数。

      语法格式:

        function __destruct()      //析构方法名称是以两个下划线开始的__destruct()

        {

          #方法体  通常用来完成一些对象销毁前的清理任务

        }

     1 <?php
     2     class Student
     3     {
     4         public $name;
     5         public $age;
     6 
     7         //构造方法,new实例化时会自动调用此方法,目的是实现对象初始化赋值
     8         public function __construct($name,$age)
     9         {
    10             $this->name=$name;
    11             $this->age=$age;
    12         }
    13 
    14         public function getInfo()
    15         {
    16             echo "我的姓名:".$this->name." 性别:".$this->age."<br>";
    17         }
    18         
    19         public function __destruct()
    20         {
    21             echo "这是析构函数。";
    22             echo $this->name."对象被释放了!<br>";
    23         }
    24     }
    25 
    26 
    27 
    28     //实例化
    29     $zhangsan=new Student("张三",20);
    30     $lisi=new Student("李四",22);
    31 
    32     $zhangsan->getInfo();
    33     $lisi->getInfo();
    34 
    35 
    36  ?>
  • 相关阅读:
    网页日历显示控件calendar3.1
    切换“使用被动式FTP”
    href="javascript:xxx(this);"和onclick="javascript:xxx(this);"的区别
    CSS布局--上中下布局(上下固定,中间自适应)
    css字体颜色动画
    怎么让jQuery支持swipe事件
    html 5 canvas
    javascript面向对象
    WEB相关存储方式
    angularjs
  • 原文地址:https://www.cnblogs.com/yexiang520/p/5648509.html
Copyright © 2011-2022 走看看