`

PHP理解之三:PHP的类自动加载【转】

    博客分类:
  • PHP
 
阅读更多

转:http://www.liuhui.info/article78.html

 

spl_autoload_register()函数应该是主流框架使用最多的也是非常核心的函数之一,可实现自动注册函数和类,实现类似__autoload() 函数功能,简化了类的调用与加载,提高了工作的效率,这里通过一个实验谈谈这个函数的部分特征。

函数原型
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_once 'lib.php';
   }
   spl_autoload_register('load');
?>

 其中lib.php文件代码如下:

<?php
class className{
    function method(){
        echo 'a method in class';
    }
}
 
function onlyMethod(){
    echo 'method only';
}
?>

 说明:lib.php文件为一个className类和一个onlyMethod函数。

 注意:通过自动加载的方式加载的php文件中必须包含有类定义。

 

第二步,调用自动加载类

$class = new className();
$class->method();
onlyMethod();

 输出为:a method in class
             method only

 

第三步,直接调用函数

onlyMethod();

说明:没有实例化类,直接调用lib.php文件中的onlyMethod()函数

输出:
Fatal error : Call to undefined function onlyMethod() in '...(省略路径)'

 

第四步,实例化className类,再直接调用

$class = new className();
onlyMethod();

输出:method only

从上面的四步实验发现,如果加载的文件包含函数,使用则一定需要实例化里面的类,否则就产生异常情况 Call to undefined function错误,具体在使用中要注意一下。

 

 

 

 

 

 

分享到:
评论

相关推荐

    PHP类的自动加载实例

    在PHP编程中,类的自动加载是一个非常重要的概念,它能帮助我们避免手动require或include每个需要的类文件,从而简化代码,提高程序的可维护性。本示例通过两种方法展示了PHP类自动加载的实现,确保代码可以正常运行...

    PHP+jquery自动加载更多

    首先,我们要理解PHP的角色。PHP是一种服务器端的脚本语言,用于处理数据和生成动态网页内容。在自动加载更多的场景下,PHP通常负责从数据库中获取数据,根据当前页面的上下文(例如,已加载的数据数量)来决定返回...

    composer自动加载测试代码

    Composer的自动加载机制简化了引入类库的过程,使得我们可以方便地使用第三方组件,而无需手动require或include每个文件。 Composer的自动加载主要基于两个概念:PSR-0和PSR-4。PSR(PHP Standard Recommendations...

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

    打造MVC框架涉及到很多方面,其中之一便是类的自动加载机制。自动加载是通过指定的规则,在运行时动态加载类文件的一种技术,能够显著提高开发效率,避免手动require或include大量的PHP文件。 根据提供的文件内容,...

    PHP类的自动加载机制实现方法分析

    在PHP编程中,类的自动加载机制是一种非常实用的功能,它允许我们在需要使用某个类时自动引入对应的类文件,从而避免手动地一个一个去require或include。本文将深入探讨PHP类的自动加载机制的实现方法。 首先,让...

    一个轻量级的php命名空间感知自动加载生成器和phar归档生成器_PHP_Smarty_下载.zip

    首先,我们要理解PHP的命名空间(Namespace)和自动加载(Autoloading)。命名空间是PHP 5.3引入的概念,用于解决类名冲突的问题,它允许在同一个项目中使用相同名字的类、接口或函数,只要它们处于不同的命名空间下...

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

    在PHP MVC框架中,类的自动加载机制是一个关键特性,它允许开发者在程序运行时按需加载类,而无需显式地使用`require`或`include`语句。这一机制提高了代码的组织性和效率,避免了手动管理大量类文件的麻烦。本实例...

    Autoload:WCS作曲家自动加载任务

    让我们详细了解一下如何配置和使用Composer进行自动加载: 1. **配置`composer.json`**: 在项目根目录下创建或编辑`composer.json`文件,其中的`autoload`部分用于定义自动加载规则。例如,若要按照PSR-4标准加载类...

    taobao-sdk-PHP-auto_1457166217151-20200113_referu96_taobao-sdk-p

    "referu96"可能是一个内部的追踪或版本标识符,"taobao-sdk-php-auto"表明这是一个自动加载的PHP SDK,意味着它包含了自动加载类的功能,使得在项目中引入和使用更加方便。"taobao"和"taobao-sdk-php"则明确了这是与...

    snake-autoloader:PHP类自动加载器,它导入带有snake_case名称的camelCase或PascalCase类

    snake-autoloader是一款针对PHP开发的类自动加载器,它的主要功能是解决PHP类库在命名规范不统一时的加载问题。在PHP编程中,不同的开发者可能会使用不同的命名约定,如snake_case(下划线分隔命名)、camelCase...

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

    在PHP中,有两种主要的方式来实现类的自动加载: 1. **使用`__autoload`魔术函数** 当尝试创建一个未被定义的对象实例(`new`操作)或者直接使用类名访问静态属性或方法时,如果该类尚未被加载,PHP会尝试调用`__...

    php+mysql+jquery.more.js下拉加载带sql数据完整流程带mysql测试数据

    这个功能常见于网页中,当用户滚动页面到底部时,会自动加载更多内容,提供流畅且连续的浏览体验。 首先,`index.html`是主页面,它包含了整个网页的结构和样式。在这个HTML文件中,你需要正确地引入`jquery.more....

    一个使用json生成phpclass代码的工具

    3. **PHP类的自动加载**:在PHP中,可以使用 spl_autoload_register() 函数注册一个或多个自动加载函数,这样在尝试使用未定义的类时,会自动调用这些函数来尝试加载对应的类文件。 4. **getter和setter方法**:...

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

    PHP自动加载的autoload机制是PHP面向对象编程中一个重要的特性,它能够在运行时自动加载指定的文件,而无需手动调用include或require语句。在PHP 5及以后的版本中,autoload通常使用spl_autoload_register()函数来...

    php滚动加载加分页小实例

    滚动加载,也称为无限滚动或懒加载,是一种网页设计技术,当用户滚动页面时,新内容会自动加载,无需点击“下一页”按钮。这种技术提高了用户体验,尤其是在处理大量数据时,如社交媒体、新闻网站和电子商务平台。 ...

    Yii实现自动加载类地图的方法

    首先,要理解Yii中自动加载类地图的概念,需要了解Yii框架的自动加载机制。Yii框架中有一个全局的自动加载器,它可以自动加载指定的PHP类文件。这通常是通过注册类名到文件路径的映射关系到自动加载器来实现的。在...

    ede-php-autoload:针对Emacs语义PHP自动加载模拟

    在PHP开发环境中,自动加载(Autoloading)是一种节省资源并提高代码组织效率的方法,它允许我们无需显式地使用`require`或`include`来引入每个类文件。标题提到的"ede-php-autoload"是一个专门针对Emacs的扩展,...

    PHP 自动加载类原理与用法实例分析

    PHP自动加载类是面向对象编程中一项重要的功能,它能够大幅提高开发效率,减少代码冗余,并使得项目结构更加清晰。在没有自动加载类机制之前,每当引入一个新类时,都需要手动使用include或require语句来包含相应的...

Global site tag (gtag.js) - Google Analytics