手机版

如何在旧的PHP系统中使用PHP 5.3之后的库

时间:2021-09-21 来源:互联网 编辑:宝哥软件园 浏览:

所谓老系统,是指不使用PHP 5.3以上的命名空间特征编码的系统。

但是,只要您的系统运行在PHP 5.3及更高版本中,您就可以使用这些库或基于新特性的代码,例如旧系统中的命名空间编码。

我以前有洁癖,但是没有用。

例如,我是一个工具控制器,我希望Zen系统有一套标准和开放的API,就像那些国际开源的Issue项目一样。Zen本身有一套html和json自适应模式,可以作为接口使用,也可以用于其他客户端或系统集成。在过去的几天里,我尝试编写了与Redmine REST风格接口兼容的Zen PMS API,并有意识地使用了这种混合编写。

为了兼容Redmine的REST风格,首先选择Slim作为微服务框架。毫无疑问,它需要运行环境5.3,但我必须重用现有的禅宗代码才能实现高效率。

原理很简单,就是一个反斜杠,或者两个反斜杠。

slim库由composer初始化。

关键零件代码:

index.php入境文件

需要__DIR__。/vendor/autoload . PHP ';需要__DIR__。/Inc/Zen Tao/nb/Autoloader . PHP ';\ Zen Tao \ nb \ autoloader 3360: register();$ app=\ Zen Tao \ core \ application :3360 app(dir name(ZTNB _ ROOT));//路由器$slim=禅宗新\ Slim \ Slim();$routes=需要__DIR__。/data/config/routes . PHP ';foreach($ routes as $ method=$ _ routes){ if($ _ routes){ foreach($ _ routes as $ rule=$ map){ $ slim-$ method($ rule,' \\zentao\\nb\\resource\\ '。$ map);} } } $ slim-run();\zentao\core\Application是一个兼容禅宗原有运行环境的独立打包类,由禅宗中的framework/router.class.php转换而来,主要用于加载禅宗中的配置文件、模型等相关资源。本质应该在这,主要是增加一些“\”让微服务运行,和运行环境聊天,作为名字空间的桥梁,可以在新代码中调用。

看资源类\zentao\nb\Resource的父类,片段。

?phpnamespace zentao \ nb/* * *资源类父类*/class resource { public function _ _ construct(){ }/* * *加载一个模块的模型文件。* *.@param string $methodName方法名,如果为空,则使用当前模块的名称。* @访问public * @返回对象|bool如果没有模型文件,返回false。否则返回模型对象。*/受保护函数load model($ moduleName){ $ model file=\ helper 33603360 setmodel file($ moduleName);/*如果没有模型文件,请尝试加载配置。*/if(!\ help : import($ model file)){ $ this-app-loadConfig($ moduleName,false);$ this-app-LoAdlang($ Module name);$ this-Dao=new Dao();返回false} $modelClass=class_exists('ext '。$moduleName。模型')?分机。$moduleName。model' : $moduleName。模型';$modelClass='\\ '。$ modelClassif(!class _ exists($modelClass))$ this-app-triggerError('找不到模型$ model class ',__FILE__,__LINE__,$ exit=true);$ this-$ moduleName=new $ model class();$ this-Dao=$ this-$ Modulename-Dao;返回$ this-$ moduleName;}这样就可以在资源类中调用禅宗的模型类。

另一种用法是加载语言包:

?phpnamespace Zen Tao \ nb \ resource;使用zentao \ nb \ enum \ BugType/** *项目自行定义的问题分类*/class issue类别扩展\ Zen Tao \ nb \ resource { public function fetchAll($ format=' JSON '){ global $ app;$ type=$ app-LoadLang(' bug ')-bug-TypeList;$ issue _ categories=array();foreach($ type as $ key=$ name){ $ issue _ categories[]=array(' id '=bugtype :3360 getidbyterid($ key),' name '=$ name);} echo json_encode(数组(“发行类别”=$发行类别));} /** * 根据项目来取其中定义的分类* @ param int $ project id * @ param string $ format */public function fetchalbyproject id($ project id,$ format=' JSON '){ $ model=$ this-load model(' project ');$ project=$ model-getById($ project id);//TODO支持按项目代号查找if(!$ project){ $ this-response note xcepted();} global $ app $ type=$ app-LoadLang(' bug ')-bug-TypeList;$ issue _ categories=array();foreach($ type as $ key=$ name){ $ issue _ categories[]=array(' id '=bug type : getidbyinterid($ key),' project'=array('id'=$projectId,' name'=$project-name),' name '=$ name);} echo json_encode(数组(' issue _ categories '=$ issue _ categories,' total _ count '=2));}}基本项目结构如下:

项目只是初步成型,尚未完成。

这是在铌中的任务列表。

这是在铌中的任务详情。

以上就是告诉大家如何在旧的服务器端编程语言(专业超文本预处理器的缩写)系统中使用PHP 5.3之后的库,希望对大家的学习有所帮助。

版权声明:如何在旧的PHP系统中使用PHP 5.3之后的库是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。