LazyPHP&LazyRest

Easy的Lazy系开源项目

LazyRest4 完全指南

简介

LazyRest,是一个基于Web的类Rest风格API生成器。LazyRest4(以下简称LR4)是为LazyPHP4专门定制的全新设计的版本,但只要简单的修改代码模板,就可以为其他的框架生成代码。

和之前的版本相比,LR4具有以下特性:

  • 直接生成最终代码,更好调试、更高性能。
  • 全新的交互界面,更漂亮和便捷。
  • 按接口而非数据表设计界面,具有更大的灵活性。
  • 本身不需要数据库,项目配置直接保存成文件,方便分享。

请使用Chrome浏览器访问本应用,其他浏览器并未做兼容性处理。…

当我在设计LP4框架时我在想些什么?

原文发布在 Job Deer Park社区。http://park.jobdeer.com/

 

之前在SF上回答过类似的问题。但我想说点具体编码以外的事情。

为什么要设计框架

极端一点,在我看来,重用代码是框架存在的唯一价值。

所以LP4的设计,都是代码重用为目的,以D(ont)R(epeat)Y(ourself)为基本规则的。

代码重用分两个级别。一是不重复自己,二是不重复其他人。

软件其实是一种能力,是封装好的、可高速、廉价、重复执行的能力。而框架,正是这种能力的封装器和分发平台。

想象一下,如果使用一个框架的所有开发者都不需要重复其他人写过的代码,这个框架的生态会是如何欣欣向荣。

开始设计框架

常用功能的组件化,可以保证不重复自己写过的代码;而好的包管理和加载设计,可以让你直接重用大量的现有代码。

今天的PHP世界,不是代码太少,而是代码太多了。所以后者反而比前者更重要。

Composer已经成为PHP里边最常用的包管理器,而PSR4的规范让它可以和其他很多包天然兼容。LP4直接将Composer作为包管理和加载器。这解决了两个问题。一个是命名空间和自动加载的问题;另一个是在LP4中直接使用海量Composer包的问题。

基于Composer的包管理很好用,但唯一的问题是包的依赖太多。Laravel是一个很Sexy的框架,但是它install后的文件目录居然有28M之多。

我知道很多文件并不会被引用,但事实上,老外写的东西,总是对形式的注重更胜于性能和简洁性。当然老外里边也有讨厌依赖的,他们做了auraphp。这是一个零依赖的PHP包集合。 http://auraphp.com/

LP4自己实现了最核心的组件,只把Composer作为外围。

未来的框架

和@luofei614 讨论时,我们经常聊未来的框架。

软件开发已经互联网化了。Composer 用起来很爽,Bower 用起来很爽,为什么?

它们都有一个在线搜索功能,在这里你可以搜索到各种别人打好的包,然后通过命令在几十秒内无缝整合到自己的代码中。

我觉得未来的PHP框架也会这样。Composer实现了一部分,它的重用只是基础组件级别的。

而真正有意思的是业务级别的。我下载一个内核,就几百k,然后我开始选功能:

我要整合微博登录,lp4 install weibologin ,

我要发送邮件,lp4 install sendcloud ,

我要把界面从Bootstrap换成Polymer, lp4 update interface polymer。

我要用户系统,lp4 install member mod ,

我要Feed流,lp4 install feeds mod 。

上帝说要有光,于是便有了光。这是LP4的远景,我们会慢慢的走过去。

目前我们大部分精力都花在了JobDeer上,好在JD就是基于LP4的,所以虽然很慢,我们会贡献出一个靠谱而成熟的框架。…

LazyRest4的设定和原型 (初稿)

LazyRest4的设定和原型 (初稿)

LazyRest4的一些设定

  1. 元数据直接写在代码注释中,是的,就是LazyPHP4里边,方法的注释块里边。
  2. LR4直接放置于LP4根目录下,可直接读取项目配置。
  3. LR4会根据界面设置生成新的代码,同时更新代码的版本号,在被覆盖之前,旧的代码会备份到对应的版本。

抽了点时间把LR4的原型简单做了下,细节还需要很多调整,主要是结构和大体布局。

Screen Shot 2014-05-18 at 21.59.09

在线DEMO : http://4.lazyrest.sinaapp.com/

里边大部分的链接还没做,所以录了个小视频演示下