• PHP核心技术——面向对象


    类与对象:

    • 类的定义与实例化。
    //定义类
    class person{
        public $name;
        public $gender;
        public function say(){
            echo $this->name,"\tis ",$this->gender,"\r\n";
        }
    }
    
    class family{
        public $people;
        public $location;
        public function __construct($p,$loc)
        {
            $this->people=$p;
            $this->location=$loc;
        }
    
    }
    
    //实例化
    $student=new person();
    $student->name='Tom';
    $student->gender="male";
    $student->say();
    
    
    $teacher=new person();
    $teacher->name='Kate';
    $teacher->gender="female";
    $teacher->say();
    
    • 类定义了一系列的属性和方法,并提供了实际的操作细节,这些方法可以用来对属性进行加工。
    • 对象含有类属性的具体值,这就是类的实例化。正是由于属性的不同,才能区分不同的对象。在上面例子里,由于student和teacher的性别和姓名不一样,才得以区分开二人。
    • 对象由属性和方法组成
    • 由于PHP的对象是用数组来模拟的,因此我们把对象转为数组,就能看到这个对象所拥有的属性了。
    print_r((array)$student);
    var_dump($student);
    
    • 对象就是一堆数据。既然如此,可以把一个对象存储起来,以便需要时用。这就是对象的序列化。
    $str=serialize($student);
    echo $str;
    file_put_contents('store.txt', $str);
    $str=file_get_contents('store.txt');
    $student=unserialize($str);
    $student->say();
    
    • 对象序列化后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的集合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码
    • 对象也是一种很普通的变量,不同的是其携带了对象的属性和类的入口。
    • 而对象和数组的区别在于:对象还有个指针,指向了它所属的类。在对student对象序列化时,我们看到了“person”这几个字符,这个标识符就标志了这个对象归属于person类,故在取出这个对象后,可以立即对其执行所包含的方法。
    $tom=new family($student,'peking');
    echo serialize($student);
    echo "-----------\n";
    $student_arr=array('name'=>'Tom','gender'=>'male');
    echo "-----------\n";
    echo serialize($student_arr);
    print_r($tom);
    echo "-----------\n";
    echo serialize($tom);
    
    • 类是定义一系列属性和操作的模板,而对象则把属性进行具体化,然后交给类处理。
    • 对象就是数据,对象本身不包含方法。但是对象有一个“指针”指向一个类,这个类里可以有方法。
    • 方法描述不同属性所导致的不同表现。
    • 类和对象是不可分割的,有对象就必定有一个类和其对应,否则这个对象也就成了没有亲人的孩子(但有一个特殊情况存在,就是由标量进行强制类型转换的object,没有一个类和它对应。此时,PHP中一个称为“孤儿”的stdClass类就会收留这个对象)。

    参考资料

    • [PHP核心技术与最佳实践]
  • 相关阅读:
    二分优化lis和STL函数
    D8 双连通分量
    Apicloud 之按两次后退键退出应用
    Js 之正则验证手机号、QQ、身份证等
    PHP 之循环创建文件夹
    招聘系统
    Mysql 之根据经纬度按距离排序
    PHP 之根据两个经纬度计算距离
    PHP 之Mysql优化
    Tkinter 之使用PAGE工具开发GUI界面
  • 原文地址:https://www.cnblogs.com/geniusrun/p/10607653.html
Copyright © 2020-2023  润新知