在 PHP 5.3 之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误(Fatal Error)。 

尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_register() 函数。 spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载(同一个应用中,可以支持任意数量的加载器,比如第三方库中的)。因此,不再建议使用 __autoload() 函数,在以后的版本中它可能被弃用。

autoload_function
这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要new 的类文件包含include(requeire)进来,这样new的时候就不会找不到文件了。其实就是封装整个项目的include和require功能。

throw
此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。

prepend
如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。

test.php

<?php
class test
{
function __construct(){
echo "test 类被初始化了<br>";
}
function show(){
//当前页面是utf8编码
$str = '中文89PHP'; echo strlen($str)."<br/>"; //中文+数字+英文:6 + 2 + 3 = 11
echo mb_strlen($str, 'gbk')."<br/>"; //中文+数字+英文:3 + 2 + 3 = 8
echo mb_strlen($str, 'utf8')."<br/>"; //中文+数字+英文:2 + 2 + 3 = 7 //数据库 varchar 一个中文占一个字符长度
}
}
my_autoload.php 文件
<?php
//方法一:自动加载函数 5.0之后弃用
/*function __autoload($class)
{
$file = $class . '.php';
if ( is_file($file) ) {
require_once($file);
}
} $test = new test(); //输出:test 类被初始化了
*/ //使用 spl_autoload_register 函数
//方法二:
class my_autoload
{
public static function autoload($class){
$file = $class . '.php';
if ( is_file($file) ) {
require_once($file);
}
}
}
//注册加载
spl_autoload_register("my_autoload::autoload",true,true); $test = new test(); //输出:test 类被初始化了
$test->show(); ?>

spl_autoload_register 和 __autoload()魔术方法的更多相关文章

  1. PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload

    1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...

  2. php 魔术方法 __autoload()

    PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一个类 ...

  3. PHP中的魔术方法总结:__construct,__destruct ,__call,__callStatic,__get,__set,__isset, __unset ,__sleep,__wakeup,__toString,__set_state,__clone,__autoload

    1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ...

  4. php 魔术方法 说明

    1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的.◆__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名.◆__s ...

  5. PHP的魔术方法

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods) 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对 ...

  6. 浅谈PHP面向对象编程(六、自动加载及魔术方法)

    6.0 自动加载及魔术方法  6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项 ...

  7. php5 中魔术方法函数有哪几个

    魔术函数:9.3 构造函数:__construct() 9.3.1 实例化对象时被调用. 9.3.2 在类中,构造函数是用来初始化对象的,利用构造函数,可以操作对象,并改变它的值. 9.3.3 当__ ...

  8. PHP十六个魔术方法

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct ...

  9. PHP 中 16 个魔术方法详解

    PHP 中 16 个魔术方法详解   前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __constru ...

随机推荐

  1. Replication:The replication agent has not logged a progress message in 10 minutes.

    打开Replication Monitor,在Subscription Watch List Tab中,发现有大量的status= “Performance critical” 的黄色Warning, ...

  2. DataTable求列的最大值、最小值、平均值和样本数

    与sql聚合函数相似,会屏蔽null table.Compute("max(ColumnName)", "true"); table.Compute(" ...

  3. C#读写设置修改调整UVC摄像头画面-对比度

    有时,我们需要在C#代码中对摄像头的对比度进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄 ...

  4. Linux下通过md5sum生成MD5文件&校验MD5

    生成md5值 随便找个文件执行:md5sum file_name  即可生成该文件对应md5值. 也可以一次生成多个文件的md5值:md5sum file_name1 file_name2 file_ ...

  5. 第二章 Maven 构建 Java Web项目

    本教程中,我们将教给大家如何创建一个基于Spring MVC 的 Maven Web Project. 用到的技术/工具: 1.Eclipse 4.9 2.Maven 3.6.2 3.Tomcat 8 ...

  6. zynq开发板外设配置演示

    有幸得到米尔电子zynq系列开发板Z-turn Board试用体验,下面说说我这款zynq系列的Z-TURN板子外设配置.从Z-turn Board原理图上看,目前可以配置的FPGA管脚大概有100多 ...

  7. css3做ipone当时的滑动解锁闪亮条

    现在一般的登录 注册 什么  的页面,都是会做个滑动验证.一般都是像IPONE早期那个 滑动开屏的效果 ,这个效果现在可以用CSS3来实现. 主要用到几个属性 background 背景使用渐变属性, ...

  8. 安全SECUERITY英文SECUERITY证券

    security Alternative forms secuerity (mostly obsolete) English Alternative forms secuerity Pronuncia ...

  9. MES实施可能会遇到的问题,这里都帮你解决

    MES系统选型关键技术的发展已日趋成熟,开发MES系统技术并不是问题,困难的是如何确定系统的功能.规格,如何成功地使用MES系统,以充分发挥其作用,下面给大家分析这两大块内容. 实施MES系统选型的困 ...

  10. mybatis + oracle,出现ORA-01461:仅能绑定要插入LONG列的LONG值

    1.这个异常是指,用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如果是varchar2类型的,当长度超过2000,--4000(最大值)之间的时候,oracle会自动将该字段值转为long ...