• PHP回顾(面向对象)


    类中的成员属性不能够用函数为其赋值。public age = rand(1,100);//这是错误的;

    __get()   __set()  __isset() __unset()

    final 用来修饰成员方法或类,被final修饰的类不能被继承,final修饰的方法不能重载。参考博客

    const 定义的常量归类所有。类名::常量名  方式访问

    statics  成员方法中使用了$this,那么这个成员方法就不能用statics修饰.

    parent指向父类,可以访问父类的静态常量、静态属性,不能访问父类的非静态属性,可以调用父类的方法(不能是private方法,无论是否静态)

    对象串行化:serialize()    默认情况是把整个对象串行化,准确说是对象里的属性,如果我只想串行化指定的成员属性。那需要使用一个魔术方法   __sleep()  ,调用serialize时触发。还有一个   __wakeup()   是在调用unserialize() 触发, 作用是在反串行化的时候可以修改成员属性。

    __tostring() 使用echo输出对象时触发。验证码类可以使用来简化操作。

    克隆:由于把一个对象赋值给另一个变量的时候默认是引用的(不是把值传递给另一个变量)。所以需要clone,才能得到一个新的一样的对象,改变其中一个对象的时候,另一个不会变。如果说克隆的时候想要改变某些属性,需要使用__clone()  在clone的时候触发。

    class SubObject
    {
        static $instances = 0;
        public $instance;
    
        public function __construct() {
            $this->instance = ++self::$instances;
        }
    
        public function __clone() {
            $this->instance = ++self::$instances;
        }
    }
    
    class MyCloneable
    {
        public $object1;
        public $object2;
    
        function __clone()
        {
          
            // 强制复制一份this->object, 否则仍然指向同一个对象
            $this->object1 = clone $this->object1;
        }
    }
    
    $obj = new MyCloneable();
    
    $obj->object1 = new SubObject();
    $obj->object2 = new SubObject();
    
    $obj2 = clone $obj;
    
    echo '<pre>';
    print("Original Object:
    ");
    print_r($obj);
    
    print("Cloned Object:
    ");
    print_r($obj2);  //手册中的示例
    View Code

    __call()    调用类中不存在的方法时触发。

    __autoload()  

    单例设计模式:

     1 <?php
     2 
     3 class Mysql{
     4     static private $link = null;
     5     private function __construct(){
     6         echo 1111;
     7     }
     8 
     9     static public function connect(){
    10         if(is_null(self::$link)){
    11             self::$link = new self;//new self 是实例化
    12         }
    13         return self::$link;
    14     }
    15 }
    16 //这样就实现了一个简单的单例设计模式
    17 Mysql::connect(); //无论调用多少次这个方法,都只会输出一个
  • 相关阅读:
    将WindowXP系统变为正版的方法(有序列号)
    关于在vs2005下的gridview中去掉style属性中的bordercollapse:collapse;的方法
    推荐一款视频播放器射手播放器
    Thinking in C++ 下载
    session丢失、不起作用的一种情况和一种解决
    CSS控制文字长度
    让Windows XP自动登陆[摘抄]
    奇虎360安全卫士中带的卡巴斯基v6.0的一宗罪
    出现Server Application Unavailable的又一种解决办法
    Lucene.net搜索结果排序(单条件和多条件)
  • 原文地址:https://www.cnblogs.com/bneglect/p/10543142.html
Copyright © 2020-2023  润新知