如何实现一个php框架系列文章【2】实现类的自动加载
类名 | 文件名 | 路径 | |
模型类m | {$app}Mod | {$app}.mod.php | {$app}/model |
控制器类c | {$app}Ctl | {$app}.ctl.php | {$app}/control |
其他 | {$app} | {$app}.cls.php | {$app}/class |
可以实现一个简单的autoload函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
function uct_autoload( $class_name ) {
$auto_path = array (
'ctl' => 'control' ,
'mod' => 'model' ,
'cls' => 'class' ,
);
$key = strtolower ( substr ( $class_name , -3));
if (isset( $auto_path [ $key ])) {
$dir = $auto_path [ $key ] . DS . strtolower ( substr ( $class_name , 0, -3)) . '.' . $key . '.php' ;
} else {
$dir = 'class' . DS . strtolower ( $class_name ) . '.cls.php' ;
}
if (! empty ( $GLOBALS [ '_UCT' ][ 'autoload' ])) {
foreach ( $GLOBALS [ '_UCT' ][ 'autoload' ] as $app ) {
if ( file_exists (UCT_PATH . 'app' . DS . $app . DS . $dir )) {
return include UCT_PATH . 'app' . DS . $app . DS . $dir ;
}
}
}
if ( file_exists (UCT_PATH . 'framework' . DS . $dir )) {
return include UCT_PATH . 'framework' . DS . $dir ;
}
echo 'auto_load not found! ' . $class_name ;
exit (1);
}
|
如果想使用另一个模块里的函数可以使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function uct_use_app( $app ) {
if ( empty ( $GLOBALS [ '_UCT' ][ 'autoload' ])) {
$GLOBALS [ '_UCT' ][ 'autoload' ] = array (
$app
);
return true;
}
if (!in_array( $app , $GLOBALS [ '_UCT' ][ 'autoload' ])) {
array_unshift ( $GLOBALS [ '_UCT' ][ 'autoload' ], $app );
return true;
}
return false;
}
|
转载于:https://www.cnblogs.com/yyluming/p/5171098.html
如何实现一个php框架系列文章【2】实现类的自动加载相关推荐
- 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏06加载游戏背景
游戏背景 Background.java package world;import sprite.Sprite;import java.awt.*;public class Background {p ...
- thinkphp 框架自动加载原理_这下你应该理解ThinkPHP的Loader自动加载了
想了很久终于要开始系列文章的编写了,期望是写出提升和面试都可以搞定的系列文章. 当你看到本文时,如果你发现咔咔没有编写到的面试热点问题或者技术难点,期待评论区指出,一起完善. 前言 目前再整理PHP进 ...
- thinkphp 框架自动加载原理_thinkPHP5.0框架自动加载机制分析
本文实例讲述了thinkPHP5.0框架自动加载机制.分享给大家供大家参考,具体如下: 概述 ThinkPHP5.0 真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类 ...
- 无锁编程(Lock Free)框架 系列文章
无锁编程(Lock Free)框架 系列文章: 1 前置知识:伪共享 原理 & 实战 2 disruptor 使用和原理 图解 3 akka 使用和原理 图解 4 camel 使用和 原理 图 ...
- thinkphp 框架自动加载原理_ThinkPHP5分析Part 1 基本框架流程
ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能 ...
- php 实现自动加载更多,$.ajax+php实战教程之下拉时自动加载更多文章原理分析二...
摘要: 继上一篇<$.ajax+php实战教程之下拉时自动加载更多文章原理分析>文章进行进一步讲解,完善之前的代码及引入ajax和php相关内容...... 上次留下的问题不知道看官们有没 ...
- php ci框架 实例化类,php框架CI(codeigniter)自动加载与自主创建对象操作实例分析...
本文实例讲述了php框架CI(codeigniter)自动加载与自主创建对象操作.分享给大家供大家参考,具体如下: CI的autoload很好用,自动创建对象,但是注意,他的对象只有一个. 我们很多情 ...
- phpexcel的自动加载与其他框架有冲突
2019独角兽企业重金招聘Python工程师标准>>> 一直想用phpEXCEL,这次这个项目遇到了.然而坑也出来了.phpexcel的Autoloader.php里面 public ...
- PHP框架自动加载类文件原理
描述:公司项目PHP用作中间转发层(接收http请求,用 socket跟c++做通信),由于代码没有用到框架,这些东西自然就是之前的人自己写的.最近需要对这个底层进行优化,于是便看了下这部分的代码. ...
最新文章
- Zabbix 4.2 发布:支持Prometheus数据收集,可扩展性大大提升
- 悬停渐变特效html,CSS3 transition属性实现hover渐变动画效果
- js面向对象和继承的碎碎念
- 流放之路材质过滤怎么设置_房子装修,前置过滤器怎么选?看这6个要点
- .net打包自动安装数据库
- 5分钟带你看懂 GCanvas渲染引擎的演进
- 怎样在html中显示时间,如何在网页上显示当前时间
- android 调试好事工具类,Android 工具类之总结 Hua
- 整数分解为若干项之和python_SVD奇异值分解及Python实例
- putty界面最友好的颜色配置参考
- 55.购物流程(2)---configurable product
- paddle serving
- h5/uni-app打开手机app,没有则跳转到商店下载
- Promise的resolve和reject使用
- 飞猪 Serverless 体系从无到有,落地10余个业务场景
- 201224-MacOS使用Mounty非安全退出NFTS后磁盘无法加载
- 百度APP“看听模式”:“AI主播”借道信息流全面落地?
- 开源一个win10二十四节气壁纸自动更换的程序
- 各类数值型数据间的混合运算
- SRM 453.5(Div1)
热门文章
- 访问某个xml的url并将网页转成字节流
- 避免门事件 巧妙清除搜狗浏览器记录
- javascript继承的原理
- java对象关系_【java类和对象的关系】
- c# oldb连接_C# 连接数据库(ODBC、Oledb、Oracle)
- 加速Qt在线更新--使用traefik-1.7.24(不支持traefik-2.0以上版本
- android shape 绘制气泡图,气泡图-自定义 shape
- 华为鸿蒙原生app,华为鸿蒙开发者大赛颁奖典礼临近,鸿蒙原生应用来了
- JavaWeb——mybatis一对一、一对多查询
- 从外部访问Kubernetes集群中的应用