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

本篇文章是对php类的注册与自动加载进行了详细的分析介绍,需要的朋友参考下
 

工程目录如下:

1、将需要注册的类放在一个数组中

复制代码 代码如下:

<?php
final class Utils {
    private function __construct() {
    }
    public static function getClasses($pre_path = '/') {
        $classes = array(
                'DBConfig' => $pre_path.'DBConfig/DBConfig.php',
                'User' => $pre_path.'Model/User.php',
                'Dao' => $pre_path.'Dao/Dao.php',
                'UserDao' => $pre_path.'Dao/UserDao.php',
                'UserMapper' => $pre_path.'Mapping/UserMapper.php',
        );
        return $classes;
    }
}
?>

2、注册数组
注意:
步骤1中的类的路径都是相对于init.php而言的,不是相对于Utils而言的,这是因为我们通过init.php里的自动加载函数spl_autoload_register来require类的

复制代码 代码如下:

<?php
require_once '/Utils/Utils.php';
final class Init {

    /**
     * System config.
     */
    public function init() {
        // error reporting - all errors for development (ensure you have
        // display_errors = On in your php.ini file)
        error_reporting ( E_ALL | E_STRICT );
        mb_internal_encoding ( 'UTF-8' );
        //registe classes
        spl_autoload_register ( array ($this,'loadClass' ) );
    }

    /**
     * Class loader.
     */
    public function loadClass($name) {
        $classes = Utils::getClasses ();
        if (! array_key_exists ( $name, $classes )) {
            die ( 'Class "' . $name . '" not found.' );
        }
        require_once $classes [$name];
    }
}
$init = new Init ();
$init->init ();
?>

3、本例中在使用处test.php里require init.php

复制代码 代码如下:

<?php
require_once 'Init.php';
$dao = new UserDao();
$result = $dao->findByName('zcl');
?>

时间: 2024-11-03 02:03:32

解析php类的注册与自动加载的相关文章

php类的注册与自动加载__autoload

注意:__autoload() 内的错误不能被 try-catch 捕获.  代码如下 复制代码 function __autoload($class_name){      require_once(PATH.'/calsses/'.$class_name.'.php'); } $obj1 = new mycalss1(); 注册 __autoload() 自动调用的函数: spl 代码库在 PHP5.0 之后默认自动启用 spl_autoload_register([callback]);

php基础知识:类与对象(2) 自动加载对象_php技巧

自动加载对象:    很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件列表.     在 PHP 5 中,不再需要这样了.可以定义一个 __autoload 函数,它会在试图使用尚未被定义的类时自动调用.通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类.  本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClas

php类的自动加载操作实例详解_php技巧

本文实例讲述了php类的自动加载操作.分享给大家供大家参考,具体如下: 类的自动加载 在外面的页面中,并不需要去引入类文件,但程序会在需要一个类的时候自动去"动态加载"该类. ① 创建一个对象的时候new ② 直接使用一个类名(操作静态属性与方法) 使用__autoload魔术函数 当出现两种情况时候,就会调用该函数,该函数需要我们预先定义,在其中写好加载类文件的通用语句 function __autoload($name){ require './lib/'.$name.'.clas

Yii2框架自动加载机制学习

Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类require(__DIR__ .

解析zend Framework如何自动加载类

本篇文章是对zend Framework如何自动加载类进行了详细的分析介绍,需要的朋友参考下   1.模块中类的自动载入 复制代码 代码如下: $loader = new Zend_Application_Module_Autoloader(array( //模块内容自动加载类 'namespace' => 'Blog',//命名空间定义 即方法的开头为Blog_ 'basePath' => APPLICATION_PATH . '/modules/blog',//模块位置 )); 2. 自动

解析zend Framework如何自动加载类_php技巧

1.模块中类的自动载入 复制代码 代码如下: $loader = new Zend_Application_Module_Autoloader(array(   //模块内容自动加载类    'namespace' => 'Blog',//命名空间定义 即方法的开头为Blog_    'basePath'  => APPLICATION_PATH . '/modules/blog',//模块位置)); 2. 自动载入 复制代码 代码如下: require_once 'Zend/Loader/A

PHP命名空间和自动加载类_php实例

PHP的命名空间(namespace)是php5.3之后才有的.这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的. 为什么php中要使用namespace? 假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的.因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件.所以在没有namespace的时候,我们会想各种命名规则来区分不同的类,比如project1_school1_class1_Stu

php面向对象 自动加载类 对象串行化 多态的应用

自动加载类很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表. 在软件开发的系统中,不可能把所有的类都写在一个PHP文件中,当在一个PHP文件中需要调用另一个文件中声明的类时,就需要通过include把这个文件引入.不过有的时候,在文件众多的项目中,要一一将所需类的文件都include进来,是一个很让人头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里

PHP autoload实现自动加载类

下面是使用autoload机制加载Person类的例子:  代码如下 复制代码 /* autoload.php */    <?php     function __autoload($classname) {   require_once ($classname . "class.php"); }     $person = new Person("Altair", 6); var_dump ($person); ?>     PHP的autoload