我刚刚“完成”用PHP编写相对复杂的Web服务。由于最后一刻的请求,更改,附件,通常情况下,代码库现在有点混乱。
我尝试尽可能轻松地编写代码,以最大限度地提高性能。
因此,我没有使用像Zend这样的任何框架或任何像Doctrine这样的ORM。
我想知道是否存在任何框架或设计模式仅用于在PHP中构建API / Web服务?
我正在考虑一个重构器,我想确保现在我确切地知道我可以正确地构建这个东西。
答案 0 :(得分:15)
我提前为我自己的框架自我引用道歉 - 除非我不使用任何其他内容,否则我无法帮助你。我不是广告,因为它不公开。
正如我在评论中所说,我认为一个好的网络前端框架并不意味着它是一个糟糕的网络服务框架。
因为我对任何流行的PHP框架(CodeIgniter,CakePHP,Kohana)处理请求以及它们的大小的限制性方式不满意,所以我编写了一个仅用于两个目的的框架,进程请求并确定要采取的操作,然后将该操作的代码与视图分开(响应)。
我使用的设计模式是:
/users
- 用户列表/user/*
- 由*
所在的值标识的用户。/user/*/delete
- 删除用户/posts
- 列出帖子/post/*
- 查看帖子*
UserActions::saveUser
,则要执行 POST
。它仅在POST上执行的原因是为了使输出和输入具有相同的URL。SecurityManager::authorize
),如果返回false
,则会重定向到您选择的路径。我认为这种设计模式适用于Web服务的原因是:
POST
,也检查其他方法。)答案 1 :(得分:0)
如果你真的不想使用已经存在的任何东西(尝试CakePHP!),那么mvc之后的代码可以帮助你在更多层上拆分应用程序的逻辑,并保持更多可读和可调试。
当然,也可以用更好的模式编写糟糕的代码,这取决于你!
答案 2 :(得分:0)
我认为您可以使用简单Web应用程序使用的相同模式。 restful服务具有与Web应用程序不同的接口,但该接口下的所有内容都是相同的。您可以将restful服务转换为Web应用程序,如下所示:
METHOD host/resource/data => host/resource/METHOD?data
资源是控制器,METHOD是动作。 例如:
GET http://library.com/books/123 => http://library.com/books/get?123
所以你可以使用前端控制器和MVC。
答案 3 :(得分:-1)