🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 服务类[service]的封装 由于本项目的业务需求,我们需要封装大量的服务类来完成各种数据以及逻辑处理,我们在此以客户端订单管理操作为例。订单管理要实现以下操作: 订单报价(orderOffer) 订单支付(orderPay) 订单评价(orderComment) 按照传统的写法,我们会写成这样: class orderAction { public function orderOffer() { //do something } public function orderPay() { //do something } public function orderComment() { //do something } } 这些写,是可以实现业务需求,但是扩展性和灵活性太差。在我们的项目中,我们采用`call_user_func`这个函数来实现。 class orderAction { public function render($actionName) { call_user_func([self::class, $actionName]); } private function orderOffer() { //do something } private function orderPay() { //do something } private function orderComment() { //do something } public function __call($name, $arguments) { //do something } } `orderAction`类只对外暴露一个`render`方法,在外部使用的时候,我们在通过容器注入的方式来实现访问不同的订单管理方法: Container::get(OrderAction::class)->render('orderOffer');//订单报价