7.3.1 PHP实例化对象

7.3.1 PHP实例化对象

当定义好类后,我们使用new关键字来生成一个对象。
$对象名称 = new 类名称();
$对象名称 = new 类名称([参数列表]);
由于对象资料封装的特性,对象属性(类中定义的变量)是无法由主程序区块直接来访问的,必须通过对象来调用类中所定义的属性和行为函数,间接地达成存取控制类中资料的目的。

<?php
    //声明一个电话类Phone
    class Phone {               
        //类中成员同上(略)
    }
    
    // 声明一个人类Person
    class Person {                  
        //类中成员同上(略)
    }
    //通过Person类实例化三个对象$person1、$person2、$person3
    $person1 = new Person();        //创建第一个Person类对象,引用名为$person1
    $person2 = new Person();        //创建第二个Person类对象,引用名为$person2
    $person3 = new Person();        //创建第三个Person类对象,引用名为$person3
    //通过Phone类实例化三个对象$phone1、$phone2、$phone3
    $phone1 = new Phone();          //创建第一个Phone类对象,引用名为$phone1
    $phone2 = new Phone();          //创建第二个Phone类对象,引用名为$phone2
    $phone3 = new Phone();          //创建第三个Phone类对象,引用名为$phone3

对象中成员的访问

类中包含成员属性与成员方法两个部分,我们可以使用“new”关键字来创建一个对象,即:
$引用名 = new
类名(构造参数);那么我们可以使用特殊运算符“->”来访问对象中的成员属性或成员方法。如:
$引用名 = new 类名(构造参数);
$引用名->成员属性=赋值; //对象属性赋值
echo $引用名->成员属性; //输出对象的属性
$引用名->成员方法(参数);//调用对象的方法
如果对象中的成员不是静态的,那么这是唯一的访问方式。

对象和类的关系:
对象是实际存在的,占有动态资源。
类是对象的蓝图,可能占有静态资源。
对象属性占有动态资源
类(静态)属性实际上是有类名字空间上的“全局变量”
性能考虑:
每个对象要单独占用数据空间
增加的调用层次可能消耗执行时间

boyfriend.class.php

<?php
/*
 *  属性
 *      性别:男
 *      年龄: 24
 *      身高: 175cm
 *      眼睛: 大
 *
 *
 *  行为
 *
 *      做饭
 *      做家务
 *  
 *   class 类名  {
 *      
 *
 *   }
 *
 *   注意:  在类的成员属性前面一定要有一个修饰词, 如果不知道使用什么修饰词, 就可以使用var (关键字), 如果一旦有其它的修饰词就不要有var
 *
 */


    class BoyFriend {
        //变量 (成员属性)
        var $name = "gaoluofeng";
        var $age = 24;
        var $sex = "男";
        var $height = "175cm";
        var $eye = "big";


        //函数 (成员方法)
        public function doFan($rou, $cai) {
            return "做饭的功能<br>";
        }

        function doJW() {
            return "做家务的功能<br>";
        }
    }

    $bf1 = new  BoyFriend();

    $bf1 -> name = "张三";


    $bf2 = new BoyFriend;

    $bf2 -> name = "李四";

    echo $bf1->sex."<br>";
    echo $bf2->height."<br>";



    echo $bf1 -> dofan("牛肉", "土豆");
    echo $bf2 -> dojw();

test.php

<?php
    include "boyfriend.class.php";
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容