PHP学习笔记——10.魔术方法

1.定义

  是指在某些特定情况下会自动调用的方法

  PHP提供了多个魔术方法,都是以__开头的

2.构造方法 __construct

  当实例化对象时,会自动调用该方法
  可用于在实例化对象时传参,以控制类的属性

  class 类名 {
    private 属性名 = null;
    public function __construct ($形参) {
      $this -> 属性名 = $形参;
    }
  }
  $对象 = new 类名(‘实参‘);
  echo $对象 -> 属性名;

3.析构方法 __destruct

  当使用unset()销毁对象、为对象赋予其他值或页面执行完后会调用该方法

4.自动加载 __autoload

  当实例化针对的类未加载到当前文件中时会自动调用该方法
  且会将类名传入作为参数

  function __autoload ($class) {
    require (‘./‘. $class .‘.php‘);
  }
  $对象 = new 类名();

  注意:
  类的声明是全局有效的(哪怕在函数的内部)
  可使用spl_autoload_regsite(‘方法名‘)将自定义方法
  注册为具有“自动加载”功能的方法

4.其它
  方法名 调用条件
  __clone() 当使用clone()克隆对象时
  __get($形参) 当访问非公共/未定义的属性时
  __set($形参1,$形参2) 当修改非公共/添加未定义的属性时
  __call($形参1,$形参2) 当访问非公共/未定义的方法时
  __callStatic($形参1,$形参2) 当访问非公共/未定义的静态方法时
  __isset() 当对非公共/未定义的属性使用isset()时
  __unset() 当对非公共/未定义的属性使用unset()时

  注意:这些魔术方法在编写框架底层应用时,可以起到非常重要的作用

作者:@zhnoah
出处:http://www.cnblogs.com/zhnoah/
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 
接,否则保留追究法律责任的权利。

时间: 2024-10-12 17:31:38

PHP学习笔记——10.魔术方法的相关文章

jQuery学习笔记10:Ajax技术

jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. jQuery 采用了三层封装:最底层的封装方法为:$.ajax(),而通过这层封装了第二层有三种方法:.load().$.get()和$.post(),最高层是$.getScript()和$.getJSON()方法. 函数 描述 jQuery.ajax() 执行异步 HTTP (Ajax) 请求. .ajaxComplete() 当 Ajax 请求完成时注册要调用的处理程序.这是一个

Android:日常学习笔记(10)———使用LitePal操作数据库

Android:日常学习笔记(10)---使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表.増删改查的操作.并且LitePal很"轻",jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别.目前LitePal的源码已经托管到了GitHub上. 关

python基础教程_学习笔记10:异常

异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行: >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: integer division or modulo by

《C++ Primer Plus》学习笔记10

<C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<&

学习笔记10

今天来粗略的学习一下js<script></script> JavaScript:写入 HTML 输出     document.write("<h1>This is a heading</h1>"); JavaScript:对事件作出反应       <button type="button" onclick="alert('Welcome!')">点击这里</button>

thinkphp学习笔记10—看不懂的路由规则

路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INFO,PATH_INFO是什么呢?手册中提到“要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),” , url支持path_info,不是apache要支持path_info么,度娘讲的还算清楚一点,见下文: pathinfo(PHP 4 >= 4.0.3, PHP 5)path

mybatis学习笔记(10)-一对一查询

mybatis学习笔记(10)-一对一查询 mybatis学习笔记10-一对一查询 resultType实现 resultMap实现 resultType和resultMap实现一对一查询小结 本文使用两种方式(resultType和resultMap)实现一对一查询,查询订单信息,关联查询创建订单的用户信息 resultType实现 sql语句 确定查询的主表:订单表 确定查询的关联表:用户表 关联查询使用内连接?还是外连接? 因为orders表中有一个外键(user_id),通过外键关联查询

sqlite学习笔记10:C语言中使用sqlite之查询和更新数据

前面说到的 sqlite_exec() 中的第三个参数, SQLite 将为 sql 参数内执行的每个 SELECT 语句中处理的每个记录调用这个回调函数. 本节添加了两个函数,selectFromTable和updateTable. 实例程序如下: #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db&quo

lua学习笔记10:lua简单命令行

前面多次用了命令行,这次就好好学下命令行: 一 格式 lua [options][script][args] 二 具体命令 -e 直接将命令传个lua -l 加载一个文件 -i 进入交互模式 例如,终端输入: lua -e "print(math.sin(12))" lua学习笔记10:lua简单命令行,布布扣,bubuko.com