4.4. 调用Core服务

bzfshop 提供了一系列的核心服务位于 Core 目录下面,大多数时候你只需要调用 Core 下面的核心服务就能完成你所需要的各种数据访问操作了。下面我们做一个简单的商品查询功能,用户传入商品ID goods_id 我们显示对应的商品标题和价格,代码如下:

Index.php. 

namespace Controller\Test;

use Core\Helper\Utility\Validator;
use Core\Service\Goods\Goods as GoodsBasicService;

class Index extends \Controller\BaseController
{

    public function get($f3)
    {

        // 从 GET 中取得参数
        $validator = new Validator($f3->get('GET'));

        // 验证参数的合法性
        $goods_id =
            $validator->required('参数不能为空')->digits('参数必须是数字')->min(10, true, '参数必须大于等于10')->validate('goods_id');

        if (!$this->validate($validator)) {
            goto out_fail;
        }

        // 调用商品服务查询商品
        $goodsBasicService = new GoodsBasicService();
        $goodsInfo         = $goodsBasicService->loadGoodsById($goods_id);

        // 如果商品不存在,则为非法ID
        if ($goodsInfo->isEmpty()) {
            $this->addFlashMessage('商品ID[' . $goods_id . ']非法');
            goto out_fail;
        }

        // 显示商品名称
        echo $goodsInfo['goods_name'];

        return; // 成功从这里返回

        out_fail: // 失败从这里退出

        // 打印出错消息
        $flashMessageArray = $this->getFlashMessageArray();
        foreach ($flashMessageArray as $flashMessage) {
            echo $flashMessage . "\n";
        }

    }

    public function post($f3)
    {
        $this->get($f3);
    }

}

在上面的代码里,我们首先用 use Core\Service\Goods\Goods as GoodsBasicService; 引入 Core 中的服务,然后调用 $goodsInfo = $goodsBasicService→loadGoodsById($goods_id); 取得商品数据,最后显示商品的标题。

Core 中有大量的系统服务,你可以做各种业务逻辑的查询,可以说 Core 就是 bzfshop 的核心业务逻辑。具体 bzfshop 提供了哪些业务逻辑供你使用请自行查阅 Core 下面的代码。