Think\\Swoole\\Table是think-swoole中对Swoole\\Table使用的再一次封装,开发者可以在配置文件中定义好Table字段结构,由think-swoole自动帮你创建它,然后其他地方直接存取值即可。 **一、配置内存表结构** 在config/swoole.php的tables配置文件中配置需要创建的内存表结构 ~~~ 'tables' => [ //定义商品表 'goods' => [ //表格占用的共享内存大小 'size' => 1024, //定义表列,可以理解为数据库的字段 'columns' => [ [ //字段名 'name' => 'id', //字段类型,只支持三种 //TYPE_INT,size默认占 4 个字节,可以设置 1,2,4,8 一共 4 种长度 //TYPE_STRING,size必须设置,设置的字符串不能超过此长度 //TYPE_FLOAT,会占用 8 个字节的内存 'type' => \SWOOLE\Table::TYPE_INT ], [ 'name' => 'sku', 'type' => \SWOOLE\Table::TYPE_STRING , //设置占用字节 'size' => 32 ], [ 'name' => 'kucun', 'type' => \SWOOLE\Table::TYPE_INT ] ] ] ] ~~~ **二、完善Good.php 的逻辑代码** ~~~ <?php // +---------------------------------------------------------------------- // | najing [ 通用后台管理系统 ] // +---------------------------------------------------------------------- // | Copyright (c) 2020 http://www.najingquan.com All rights reserved. // +---------------------------------------------------------------------- // | Author: 救火队队长 namespace app\controller; use app\BaseController; class Good extends BaseController { public function getList() { //获取到内存中所有表信息 var_dump(app("think\\swoole\\table")); echo "<br>"; //获取到具体某张表信息,返回Swoole/Table对象 $goods = app("swoole.table.goods"); var_dump($goods); echo "<br>"; //向表中添加一行 //设置行的数据Swoole\Table->set(string $key, array $value): bool; //string $key 相同的 $key 对应同一行数据,如果 set 同一个 key,会覆盖上一次的数据,key 最大长度不得超过 63 字节 //array $value 必须是一个数组,必须与字段定义的 $name 完全相同 $goods->set('5cc0448eCuu9Ta', [ 'id' => 1, 'sku' => "5cc0448eCuu9Ta", 'kucun' => 4 ]); //获取goods表中key=5cc0448eCuu9Ta的记录 var_dump($goods->get('5cc0448eCuu9Ta')); echo "<br>"; //模拟用户下单,商品库存减一 $goods->decr('5cc0448eCuu9Ta', 'kucun', 1); //获取goods表中此时key=5cc0448eCuu9Ta的记录 var_dump($goods->get('5cc0448eCuu9Ta')); } } ~~~ **三、程序输出结果** ![](https://img.kancloud.cn/36/9c/369c06c43743224267d28b34e2ac34ac_965x199.png)