全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何在宝塔面板中创建新站点?  如何在腾讯云免费申请建站?  如何选择高效稳定的ISP建站解决方案?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  c# Task.ConfigureAwait(true) 在什么场景下是必须的  TestNG的testng.xml配置文件怎么写  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在局域网内绑定自建网站域名?  如何实现建站之星域名转发设置?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  建站之星展会模版如何一键下载生成?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何高效完成自助建站业务培训?  建站之星上传入口如何快速找到?  高端企业智能建站程序:SEO优化与响应式模板定制开发  油猴 教程,油猴搜脚本为什么会网页无法显示?  教程网站设计制作软件,怎么创建自己的一个网站?  制作营销网站公司,淘特是干什么用的?  潮流网站制作头像软件下载,适合母子的网名有哪些?  建站之星如何快速解决建站难题?  已有域名如何快速搭建专属网站?  网站制作免费,什么网站能看正片电影?  如何用y主机助手快速搭建网站?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  常州自助建站费用包含哪些项目?  如何快速重置建站主机并恢复默认配置?  安徽网站建设与外贸建站服务专业定制方案  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  高防服务器如何保障网站安全无虞?  北京网站制作公司哪家好一点,北京租房网站有哪些?  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何在七牛云存储上搭建网站并设置自定义域名?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  相册网站制作软件,图片上的网址怎么复制?  如何选择高性价比服务器搭建个人网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  网站制作模板下载什么软件,ppt模板免费下载网站?  长沙企业网站制作哪家好,长沙水业集团官方网站?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何自定义建站之星模板颜色并下载新样式?  如何通过远程VPS快速搭建个人网站?  如何快速查询网址的建站时间与历史轨迹?  如何用IIS7快速搭建并优化网站站点?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  建站之星如何助力网站排名飙升?揭秘高效技巧  太原网站制作公司有哪些,网约车营运证查询官网?  实例解析Array和String方法  广东专业制作网站有哪些,广东省能源集团有限公司官网?  制作网站的过程怎么写,用凡科建站如何制作自己的网站? 

您的项目需求

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