PHP中类的自动加载的方法

类的自动加载是指,在外面的页面中,并不需要去“引入”类文件,但是程序会在需要的时候动态加载需要的类文件。

方法1:使用__autoload魔术函数

当程序需要某个类时,就会去调用该函数,该函数我们需要自己去定义并在其中写好加载类文件的通用语句。

<?php
    //需要类是自动调用,而且会传进来一个类名,这个案例的文件名为21A.class.php,类名为A
     function __autoload($className){
      require "./21".$className.".class.php";
    }
    $o1 = new A();
    $o1->v1 = 10;
    echo "<br/>v1:".$o1->v1;
  ?>

方法2:使用spl_autoload_register函数

该函数的作用是生命多个可以用来代替autoload函数作用的函数,语法如下:spl_autoload_regist("函数名1");如果用spl_autoload_register,autoload就失效了。

<?php
    //注册两个用于自动加载的函数名
    spl_autoload_register('auto1');
    spl_autoload_register('auto2');
    function auto1($className){
      $file = "./21".$className.".class.php";
      if(file_exists($file)){
        require "./21".$className.".class.php";
      }
    }
    function auto1($className){
      $file = "./22".$className.".class.php";
      if(file_exists($file)){
        require "./22".$className.".class.php";
      }
    }
    //如果需要一个雷,但这个页面还没有记载,就会依次调用auto1和auto2,知道找到该类文件并加载
  ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • php自动加载autoload机制示例分享

    1,自定义函数 2,spl_autoload_register() 复制代码 代码如下: liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ ll ./*-rw-rw-r-- 1 liuyuan liuyuan  800 Feb 19 11:39 ./func_autoload.php-rw-rw-r-- 1 liuyuan liuyuan  906 Feb 19 11:28 ./spl_autoload.php ./include:total 16drw

  • PHP spl_autoload_register实现自动加载研究

    这里通过一个实验谈谈这个函数的部分特征. 函数原型 bool spl_autoload_register ([ callback $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) 版本兼容 PHP 5 >= 5.1.2 实验过程 第一步,使用spl_autoload_register()函数注册load()方法 复制代码 代码如下: <?php function load(){ require_onc

  • php _autoload自动加载类与机制分析

    在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可 test.class.php 复制代码 代码如下: <?php class abc{ function __construct() { echo 'www.hzhuti.com; } } ?> load.php 代码如下 复制代码 代码如下: <?php class LOAD { static function loadClass($class_name) { $filename = $cl

  • PHP的autoload自动加载机制使用说明

    在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来,但是这样可能会使得在引用文件的新脚本中,存在大量的include或require方法调用,如果一时疏忽遗漏则会产生错误,使得代码难以维护. 自PHP5后,引入了__autoload这个拦截器方法,可以自动对class文件进行包含引用,通常我们会这么写: 复制代码 代码如下: function __autoload($className) { include_o

  • php自动加载机制的深入分析

    一.php中实现自动加载的方法1.使用require,include,require_once,include_once手工进行加载.2.使用__autoload来进行自动加载3.使用spl的autoload来实现自动加载手工加载的实现: 当需要加载的文件很少的时候我们可以使用第一个来完成.这样做很简单也没问题. 复制代码 代码如下: require_once 'a.php';require_once 'b.php';require_once 'c.php'; 但是当需要加载文件很多的时候这样做

  • 解析php类的注册与自动加载

    工程目录如下: 1.将需要注册的类放在一个数组中 复制代码 代码如下: <?phpfinal class Utils {    private function __construct() {    }    public static function getClasses($pre_path = '/') {        $classes = array(                'DBConfig' => $pre_path.'DBConfig/DBConfig.php',   

  • php类自动加载器实现方法

    本文实例讲述了php类自动加载器实现方法.分享给大家供大家参考.具体如下: 这里autoload 可兼容以下格式: Cache_File_Json class_xxx.php xxx.class.php   xxx.php php代码如下: function __autoload($className){ $dirs=explode('_',$className); $fileName=array_pop($dirs); //print_r($dirs); $filePath=$fileName

  • PHP autoload与spl_autoload自动加载机制的深入理解

    PHP autoload机制详解(1) autoload机制概述在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利.这 也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例 子: 复制代码 代码如下: /* Person.class.php */<?phpclass Person {var $name, $age;f

  • php自动加载方式集合

    php加载文件方式: 1.include,include_once,requice,requice_one常规加载 2.__autoload() 3.spl_autoload_register() 常规加载方式 假设我们有一个类文件A.php,里面定义了一个名字为A的类: <?php class A { public function __construct() { echo 'Got it.'; } } 然后我们有一个index.php需要用到这个类A,常规的写法就是 <?php requi

  • PHP中类的自动加载的方法

    类的自动加载是指,在外面的页面中,并不需要去"引入"类文件,但是程序会在需要的时候动态加载需要的类文件. 方法1:使用__autoload魔术函数 当程序需要某个类时,就会去调用该函数,该函数我们需要自己去定义并在其中写好加载类文件的通用语句. <?php //需要类是自动调用,而且会传进来一个类名,这个案例的文件名为21A.class.php,类名为A function __autoload($className){ require "./21".$clas

  • AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法

    本文实例讲述了AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法.分享给大家供大家参考,具体如下: 接着前面那篇<AngularJS使用ng-app自动加载bootstrap框架问题分析>,现在我们看下如何使用带属性值的ng-app命令,让ng-app自动加载我们自定义的模块作为根模块. <!DOCTYPE html> <html> <head> <script src="angular.js">&l

  • AngularJS框架的ng-app指令与自动加载实现方法分析

    本文实例分析了AngularJS框架的ng-app指令与自动加载实现方法.分享给大家供大家参考,具体如下: ng-app是angular的一个指令,代表一个angular应用(也叫模块).使用ng-app或ng-app=""来标记一个DOM结点,让框架会自动加载.也就是说,ng-app是可以带属性值的.如果想要实现自动加载,那么就不能让ng-app带有属性值. <html> <body ng-app> <div>div1:{{1+3*2}}</

  • CI框架中类的自动加载问题分析

    本文实例讲述了CI框架中类的自动加载问题.分享给大家供大家参考,具体如下: application/config 配置文件中添加: | 1. Packages | 2. Libraries | 3. Helper files | 4. Custom config files | 5. Language files | 6. Models 1. 第三方库文件加载 // $autoload['packages'] = array(APPPATH.'third_party', '/usr/local/

  • PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解

    本文实例讲述了PHP从零开始打造自己的MVC框架之类的自动加载实现方法.分享给大家供大家参考,具体如下: 前面介绍了MVC框架的入口文件,接下来我们希望完成一个"自动加载类"的功能,我们把这个功能放到Imooc这个基础类当中. core\imooc.php: <?php namespace core; class Imooc { public static $classMap = array(); static public function run() { p('ok'); $

  • PHP MVC框架中类的自动加载机制实例分析

    本文实例讲述了PHP MVC框架中类的自动加载机制.分享给大家供大家参考,具体如下: 原文 实现类的自动加载主要使用到了set_include_path和spl_autoload_register函数. set_include_path用于提前设置好可能会加载的类的路径. spl_autoload_register用于调用相关自动加载所需类的函数,实现自动载入的功能. 有一点要注意的是:自动加载在实例化类的时候执行,也就是说使用extends继承类的时候,是不会自动加载父类的. 设置目录如下:

  • php的命名空间与自动加载实现方法

    类的自动加载 引子 当我们在php代码中加载类时,我们必须要include或者require 某个类文件. 但遇到类似的情况,例如: require "Class1.php"; require "Class2.php"; $boy = $_GET['sex'] = 0?true:false; if($boy) { $class1 = new Class1(); }else{ $class2 = new Class2(); } 假如我们需要判断一个人的性别,如果是男的

  • Extjs列表详细信息窗口新建后自动加载解决方法

    在Extjs中,在当前页面的grid页新建了一行数据后,通过表单形式进入详细页面的编辑,此时,为了能让页面自动打开详细页面编辑,我花了三个小时,终于找到了在Extjs下最合适的方案,结果却只有三句话,我想,这可能也是很多Extjs爱好者们想要知道或者已经知道的,为此,将其与大家分享,只求为extjs群体贡献自己的一些想法. 列表在创建后,一般会有一个提示,现在我把我最开始的几个思路与大家讲讲,想直接看结果的可以跳到最后一套方案~ 方案1(放弃). 在新建数据后,向createform方法传送一个

  • php项目中类的自动加载实例讲解

    主要函数:spl_autoload_register() - 注册给定的函数作为 __autoload() 的实现 将函数注册到SPL __autoload函数队列中.如果该队列中的函数尚未激活,则激活它们. 如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中.因为spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()

  • PHP实现的简单路由和类自动加载功能

    本文实例讲述了PHP实现的简单路由和类自动加载功能.分享给大家供大家参考,具体如下: 项目目录如下 入口文件index.php <?php define('WEBROOT', 'C:/Users/Administrator/Documents/NetBeansProjects/test'); require_once(WEBROOT.'/core/environment.php'); core__app::run(); // 类自动加载文件environment.php <?php //根据类

随机推荐