放与封闭:多入口和统一初.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)常规代码解读 上⾯是框架执⾏所需的基础服

文档评论(0)

rovend + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档