php面向对象全攻略 (十七) 自动加载类


Posted in PHP onSeptember 30, 2009

自动加载类
很多开发者写面向对象的应用程序时,对每个类的定义建立一个PHP 源文件。一个很大
的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。
在软件开发的系统中,不可能把所有的类都写在一个PHP 文件中,当在一个PHP 文件
中需要调用另一个文件中声明的类时,就需要通过include 把这个文件引入。不过有的时候,
在文件众多的项目中,要一一将所需类的文件都include 进来,是一个很让人头疼的事,所以
我们能不能在用到什么类的时候,再把这个类所在的PHP 文件导入呢?这就是我们这里我们
要讲的自动加载类。
在PHP5 中,可以定义一个__autoload()函数,它会在试图使用尚未被定义的类时自动调
用,通过调用此函数,脚本引擎在PHP 出错失败前有了最后一个机会加载所需的类,
__autoload()函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义
类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形
成文件名,比如xxx_classname.php、classname_xxx.php 以及就是classname.php 等等。
本例尝试分别从MyClass1.php 和MyClass2.php 文件中加载MyClass1 和MyClass2 类
代码片段

<?php 
function __autoload($classname) { 
require_once $classname . '.php'; 
} 
//MyClass1类不存在自动调用__autoload()函数,传入参数”MyClass1” 
$obj = new MyClass1(); 
//MyClass2类不存在自动调用__autoload()函数,传入参数”MyClass2” 
$obj2 = new MyClass2(); 
?>
PHP 相关文章推荐
PHP中Session的概念
Oct 09 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
PHP源码之explode使用说明
Aug 05 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 #PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 #PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 #PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 #PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 #PHP
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 #PHP
php面向对象全攻略 (九)访问类型
Sep 30 #PHP
You might like
投票管理程序
2006/10/09 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
javascript 函数速查表
2010/02/07 Javascript
javascript类型转换示例
2014/04/29 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
python读写ini配置文件方法实例分析
2015/06/30 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
资产评估专业学生的自我鉴定
2013/11/14 职场文书
新闻系毕业生推荐信
2013/11/16 职场文书
护理专业自荐信
2013/12/03 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js