我刚刚完成了一个比较复杂的PHP Web服务的编码。由于最后一刻的请求、更改和添加等常规操作,代码库现在有些混乱。
我试图尽可能轻量级地编写代码,并以最大化性能的方式进行编码。
因此,我没有使用任何框架(如Zend)或ORM(如Doctrine)。
我想知道是否有任何框架或设计模式专门用于构建PHP的API / Web服务?
我正在考虑重构,并希望确保现在我清楚地知道其中涉及的内容,可以正确地构建这个东西。
我刚刚完成了一个比较复杂的PHP Web服务的编码。由于最后一刻的请求、更改和添加等常规操作,代码库现在有些混乱。
我试图尽可能轻量级地编写代码,并以最大化性能的方式进行编码。
因此,我没有使用任何框架(如Zend)或ORM(如Doctrine)。
我想知道是否有任何框架或设计模式专门用于构建PHP的API / Web服务?
我正在考虑重构,并希望确保现在我清楚地知道其中涉及的内容,可以正确地构建这个东西。
我提前为自己的框架做了一些自我介绍,这是因为如果不用它的话,我无法帮助你。我没有广告,因为它是不公开的。
正如我在评论中所说的那样,我认为一个好的Web前端框架不应该意味着它是一个较差的Web服务框架。
由于我对任何流行的PHP框架(CodeIgniter、CakePHP、Kohana)都感到不满,因为它们处理请求的方式太过受限,并且它们的大小也很大,所以我编写了一个仅针对两个目的而设计的框架:处理请求并确定要采取的操作,然后将该操作的代码与视图(响应)分离。
我使用的设计模式如下:
/users
- 用户列表/user/*
- 根据*
的值确定的用户。/user/*/delete
- 删除用户/posts
- 帖子列表/post/*
- 查看帖子*
UserActions::saveUser
在HTTP方法是POST
时执行。之所以只在POST上执行,是为了使输出和输入具有相同的URL。SecurityManager :: authorize
),如果返回false
,则将重定向到您选择的路径。我认为这种设计模式适用于Web服务的原因:
POST
,还要检查其他方法)。我认为您可以使用与简单Web应用程序相同的模式。RESTful服务具有不同于Web应用程序的接口,但接口下的所有内容都是相同的。您可以按如下方式将RESTful服务转换为Web应用程序:
METHOD host/resource/data => host/resource/METHOD?data
资源是控制器,方法是动作。 例如:
GET http://library.com/books/123 => http://library.com/books/get?123
因此,您可以使用前端控制器和MVC。
在我看来,每个基于MVC的“东西”都可以真正帮助你。
如果你真的不想使用任何已经存在的东西(试试CakePHP!),那么按照MVC结构化你的代码可以帮助你将应用程序的逻辑分割成更多层,并使其更易读和调试。
当然,即使有更好的模式,你也可以编写糟糕的代码,这取决于你!