spl_autoload_register和__autoload是用来自动加载类的,不用每次都require,include这样搞。

先说__autoload的用法,

在同级目录建立2个文件,一个index.php,一个是test.php,内容。

test.php
<?php class Test{
function sayhi(){
echo "hi";
}
}
?>
index.php
<?php //第一种
function __autoload($class){
$file = $class.'.php'; if(is_file($file)){
require_once ($file);
}
} $o = new Test();
$o->sayhi(); ?>

这样执行,在index.php找不到test类的时候,会自动执行__autoload函数,把test类加载进来,并且实例化,输出hi

接下来讲spl_autoload_register。也是上面那个test.php,index.php如下

function loadscript($class){
$file = $class.'.php'; if(is_file($file)){
require_once ($file);
}
} spl_autoload_register('loadscript'); $o = new Test();
$o->sayhi();

这里注意下,找不到Test类之后,会去执行spl_autoload_register ,注册的函数loadscript,接着把test类加载进来。

同时,可以把loadscript函数写在类的静态方法中,这样也能自动加载

//第三
class m {
public static function loadprint( $class ) {
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
} spl_autoload_register(array('m','loadprint'));
$o = new Test();
$o->sayhi();

自己参考上面写一遍都知道了~

php的自动加载函数spl_autoload_register和__autoload的更多相关文章

  1. ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)

    一.ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串) ...

  2. PHP自动加载上——spl_autoload_register

    spl_autoload_register函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是 我们的new 一个类的时候必须先include或者require的类文件,如果没有incl ...

  3. php注册自动加载函数

    $autoload_func = function($class) { $class = str_replace('\\', '/', $class); $file_name = dirname(__ ...

  4. php自动加载函数

    含义:将函数注册到SPL __autoload函数栈中.如果该栈中的函数尚未激活,则激活它们. 先看__autoload 函数 printit.class.php <?php class PRI ...

  5. spl_autoload_register()怎样注册多个自动加载函数?

    <?php /*function __autoload($class){ require("./class/".$class.".php"); }*/ f ...

  6. spl_autoload_register 实现自动加载

    spl_autoload_register 注册给定的函数作为 __autoload 的实现 bool spl_autoload_register ([ callable $autoload_func ...

  7. 如何解决自动加载与模板中(如Smarty)的自动加载冲突的问题

    function aotuman($class){  include('./'.$class.'.class.php'); } spl_autoload_register('automan');  / ...

  8. laravel框架源码分析(一)自动加载

    一.前言 使用php已有好几年,laravel的使用也是有好长时间,但是一直对于框架源码的理解不深,原因很多,归根到底还是php基础不扎实,所以源码看起来也比较吃力.最近有时间,所以开启第5.6遍的框 ...

  9. 构建自己的PHP框架之自动加载类中详解spl_autoload_register()函数

    在了解这个函数之前先来看另一个函数:__autoload. 一.__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: printit.c ...

随机推荐

  1. Delphi 实现照片抽奖-原创

    有单位年会要用照片抽奖,上网搜了几个都不满意,且居然还要收费.自己写一个算了.只是有一点不爽,Delphi 7 在 Windows 7 64位下有问题,不能双击 dpr 文件直接打开项目! 关于性能: ...

  2. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  3. java引用Arcface,实现人脸识别(demo)

    ## 开发环境准备: ###开发使用到的软件和工具: * Jdk8.mysql5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).li ...

  4. 【转】SWFUpload使用指南

    原文出自:http://www.runoob.com/w3cnote/swfupload-guide.html SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在 ...

  5. 关于XML文档操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...

  6. 3D打印产业链全景图

  7. HDU 5207 Greatest Greatest Common Divisor

    题目链接: hdu:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=153598 bc(中文):http://bestco ...

  8. (打补丁 )patch

    前言: diff:逐行比较文件的不同,并且显示出来. patch: 打补丁工具,将补丁打到老文件里面,也就是diff左边的那个文件,使得老文件和新文件一样 格式:diff [选项] 老文件 新文件 格 ...

  9. django里的http协议

    一个普通的user Begin########## ['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__' ...

  10. Spring MVC @RequestParam @RequestHeader @CookieValue用法

    摘要: package com.hust.springmvc1; import org.springframework.stereotype.Controller; import org.spring ...