- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
放与封闭:多入口和统一初
开放与封闭:多⼊⼜和统⼀初始化
美国著名棒球运动员约格.贝拉说过:“通过仔细地观察,你可以了解很多事 。”
1.29.1 绝对的开放,还是绝对的固化?
框架应该都会考虑这样⼀个问题:到底是应该给应⽤项⽬提供统⼀固定的⼊⼜和初始
化流程呢,还是应该给他们完全⾃由的空间?
但我发现,很多PHP的框架都提供了⼀个绝对的固化流程。也就是你能作出改动的地
⽅很少,虽然这样应⽤不需要过多地去考虑。
然⽽我觉得,这样做,弊⼤于利。特别在现在项⽬需求背景各有各的不同时。所以,
我为PhalApi框架选择了开放式的初始化做法。考虑到若开放的度太⼤,项⽬可能会迷
茫,所以又结合了统⼀的初始化。
下⾯分别说明这两点:开放式⼊⼜和封闭式的初始化。
1.29.2 开放式的⼊⼜
作为⼀个接⼜系统,是需要为不同的终端、不同的开放⼈群,甚⾄不同的版本提供不
同的服务的。
如:
按不同的终端:iOS设备、Android设备、PC版、⽹页版
按不同的开放⼈群:⼿机客户端、内部管理后台、内部其他系统、公共开放平
台
按不同的版本:版本从V1、V2到VN
按不同的项⽬:同⼀个应⽤下可能会存在多个项⽬,当然更推荐每个项⽬单独
⼀个系统
基于此,为不同的维度提供不同的⼊⼜就很有现实实⽤场景了。
更为重要的是,这些不同的⼊⼜都应该尽可能简单,并能统⼀共享公共的组件资源、
数据库、⽇志系统这些。⼀个可能的⼊⼜⽰例如下:
?php
/**
* Demo 统⼀⼊⼝
*/
require_once dirname(__FILE__) . / ../init.php;
//装载你的接⼝
DI()- loader- addDirs(Demo);
/** 响应接⼝请求 **/
$api = new PhalApi();
$rs = $api- response();
$rs- output();
简单解读⼀下上⾯的代码,⾸先要加载统⼀初始化⽂件,其实装载挂靠的接⼜项⽬
(对应你的项⽬⽬录的名称),最后创建⼀个PhalApi接⼜实例进⾏响应、输出结果。
下⾯来看下统⼀初始化⽂件需要做的事 。
1.29.3 封闭式的初始化
不⾔⽽喻,尽管我们有按不同维度划分⼊⼜的需要,但统⼀初始化的过程更是必不可
少的。
不同的⼊⼜提供了各维度定制的机会,统⼀的初始化则为应⽤提供了统⼀定制的机
会。
(1)常规⼊⼜代码
常规的⼊⼜,需要以下初始化操作:
?php
/**
* 统⼀初始化
*/
/** 根⽬录定义,⾃动加载 **/
date_default_timezone_set(Asia/Shanghai);
defined(API_ROOT ) || define(API_ROOT , dirname(__FILE__) . / ..
require_once API_ROOT . /PhalApi/PhalApi.php;
$loader = new PhalApi_Loader(API_ROOT);
/** 注册初始化服务组件 **/
//⾃动加载
DI()- loader = $loader;
// 置
DI()- config = new PhalApi_Config_File(API_ROOT . /Config);
//⽇志纪录
DI()- logger = new PhalApi_Logger_File(API_ROOT . /Runtime,
PhalApi_Logger::LOG_LEVEL_DEBUG | PhalApi_Logger::LOG_LEVEL_I
//数据操作 - 基于NotORM,$_GET[__sql__]可⾃⾏改名
DI()- notorm = function() {
$debug = !empty($_GET[__sql__]) ? true : false;
return new PhalApi_DB_NotORM(DI()- config- get(dbs), $debug
};
//调试模式,$_GET[__debug__]可⾃⾏改名
DI()- debug = !empty($_GET[__debug__]) ? true : DI()- config- g
//翻译语⾔包设定
SL(zh_cn);
(2)常规代码解读
上⾯是框架执⾏所需的基础服
您可能关注的文档
最近下载
- 【一建经济】21-JG-冲关宝典(中).pdf VIP
- 石油工程-岩石力学-试卷.pdf VIP
- 【一建经济】21-JG-冲关宝典(上).pdf VIP
- 教师的专业成长课件.pptx VIP
- 西师版小学综合实践活动方案五年级上册.pdf VIP
- 2024年四川省巴中市中考数学试卷(含答案).doc VIP
- 生成式人工智能在初中生物学教学中的应用探究.pdf VIP
- 《装配式混凝土建筑构件生产》课件——本课程学习方法.pptx VIP
- 精品解析:2023-2024学年北京市海淀区人教版五年级上册期末测试数学试卷(解析版).docx VIP
- 2011年数学建模B题国家一等奖2011年数学建模B题国家一等奖.pdf VIP
文档评论(0)