ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 服务类[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');//订单报价