zoukankan      html  css  js  c++  java
  • php的魔术方法

    __construct() 构造函数

    __destruct() 析构函数

    __call() 调用不存在的方法时调用

    __callStatic()  静态函数里面调用不存在的方法时调用

    __get() 对未定义的变量赋值时调用

    __set() 读未定义的变量时调用

    __isset() 对未定义的变量执行isset()时调用

    __unset() 对未定义的变量执行unset()时调用

    __toString() 允许以调用字符串的方法调用对象

    __invoke()  允许以调用函数的方法调用对象

    __set_state() 执行var_export返回的内容

    __clone() 对象完全复制

    使用情况:如果对象A中保存着对象B的引用,当你复制对象A时,你想其中使用的对象不再是对象B而是B的一个副本,那么 你必须得到对象A的一个副本。

    __sleep() __wakeup()

    serialize() 函数执行前会检查是否存在一个魔术方法 __sleep().如果存在,__sleep()方法会先被调用, 然后才执行序列化操作。这个功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法不返回任何内容,则NULL被序列 化,并产生 一个E_NOTICE错误。 __sleep()方法常用于提交未提交的数据,或类似的清理操作。同时,如果你有一些很大的对象, 不需要全部保存,这个功能就很好用。

    与之相反,unserialize()会检查是否存在一个__wakeup()方法。如果存在,则会先调用 __wakeup方法,预先准备对象需要的资源。__wakeup()经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作

  • 相关阅读:
    C++11 学习笔记 std::function和bind绑定器
    vue服务端渲染如何使用html模板
    vue服务端渲染的基本实现
    vscode实用6款插件
    $router.addRoutes()+vuex 动态添加路由
    Vue.extend()
    vue router滚动行为scrollBehavior
    vue路由精确匹配模式 exact
    redirect和alias的区别
    vue命名路由(name)的作用
  • 原文地址:https://www.cnblogs.com/xingmeng/p/2934870.html
Copyright © 2011-2022 走看看