全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PHP框架自动加载类文件原理详解

描述:公司项目PHP用作中间转发层(接收http请求,用 socket跟c++做通信),由于代码没有用到框架,这些东西自然就是之前的人自己写的。最近需要对这个底层进行优化,于是便看了下这部分的代码。

目的:这块代码的主要作用是把主目录下的所有插件类一次性全部加载进来。当使用尚未被定义的类(class)和接口(interface)时自动去加载。通过注册自动加载器,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

实现方法:主要用到PHP函数__autoload()

详细:

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
set_include_path($_SERVER['Root_Path'] . '/libs' . PATH_SEPARATOR .
   $_SERVER['Root_Path'] . '/lib' . PATH_SEPARATOR .
   get_include_path() );
if (!function_exists('__autoload')) {
 function __autoload($className)
 {
 ///优化包含路径
 $path=_getRootPath($className);
 $revpath=strtr($className, '_', '/'). '.php';
 $rootpath=$path.$revpath;
 file_exists($rootpath)?include($rootpath):@include($revpath);
 }
}

/**
 *得到根路径*
 */
function _getRootPath($classname)
{
 $pearpath=$_SERVER["PHP_PEAR_PATH"].'/';
 $libpath=$_SERVER['Root_Path'] . '/lib/';
 $libspath=$_SERVER['Root_Path'] . '/libs/';

 if(strpos($classname,'Zend_')===0) return $pearpath; ///zend 框架路径
 if(strpos($classname,'DB_')===0 || strpos($classname,'Interface_')===0 || strpos($classname,'Others_')===0 || strpos($classname,'Pay_')===0 || strpos($classname,'PHPMailer_')===0 ) return $libspath;
 return $libpath;
}

其中_getRootPath($classname)函数获取的是类名文件所在的真实目录,根据类名的头字段判断类在哪个目录下;

如果类能在这些目录下找到,类在使用前就会被加载。

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


# PHP自动加载类文件原理  # PHP加载类文件  # PHP自动加载文件  # PHP命名空间和自动加载类  # PHP动态地创建属性和方法  # 对象的复制  # 对象的比较  # 加载指定的文件  # 自动加载类文件  # 命名空间  # php面向对象全攻略 (十七) 自动加载类  # PHP命名空间与自动加载类详解  # php _autoload自动加载类与机制分析  # PHP面向对象程序设计之命名空间与自动加载类详解  # 说说PHP的autoLoad自动加载机制  # php自动加载的两种实现方法  # PHP的autoload自动加载机制使用说明  # PHP 自动加载类原理与用法实例分析  # 加载  # 的人  # 的是  # 就会  # 看了  # 目录下  # 所需  # 能在  # 这部  # 这块  # 大家多多  # 主目录  # 自动加载  # E_WARNING  # libs  # E_ERROR  # php  # error_reporting  # Root_Path  # _SERVER 


相关文章: 在线制作视频的网站有哪些,电脑如何制作视频短片?  Android滚轮选择时间控件使用详解  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何通过多用户协作模板快速搭建高效企业网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站之星如何实现PC+手机+微信网站五合一建站?  建站之星如何优化SEO以实现高效排名?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  临沂网站制作企业,临沂第三中学官方网站?  如何在宝塔面板创建新站点?  建站之星如何助力网站排名飙升?揭秘高效技巧  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在Windows虚拟主机上快速搭建网站?  如何用PHP工具快速搭建高效网站?  建站主机是什么?如何选择适合的建站主机?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  利用JavaScript实现拖拽改变元素大小  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  如何用腾讯建站主机快速创建免费网站?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  建站之星备案是否影响网站上线时间?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  为什么Go需要go mod文件_Go go mod文件作用说明  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  网站制作网站,深圳做网站哪家比较好?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  建站之星如何快速解决建站难题?  建站之星安装步骤有哪些常见问题?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  建站之星后台管理系统如何操作?  c# 在高并发场景下,委托和接口调用的性能对比  如何选择香港主机高效搭建外贸独立站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  小程序网站制作需要准备什么资料,如何制作小程序?  如何快速生成专业多端适配建站电话?  jQuery 常见小例汇总  如何基于云服务器快速搭建网站及云盘系统?  如何挑选高效建站主机与优质域名?  如何解决ASP生成WAP建站中文乱码问题?  完全自定义免费建站平台:主题模板在线生成一站式服务  如何在自有机房高效搭建专业网站?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  网站制作公司,橙子建站是合法的吗?  浅谈Javascript中的Label语句  建站之星代理费用多少?最新价格详情介绍  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  如何在宝塔面板中修改默认建站目录? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。