1 | <?php |
||
4 | class AppClient |
||
5 | { |
||
6 | private $_transport; |
||
7 | private $_mac; |
||
8 | private $_baseURL; |
||
9 | |||
10 | public function __construct($mac) |
||
18 | |||
19 | /* |
||
20 | * hub: 直播空间名 |
||
21 | * title: app 的名称 注意,Title 不是唯一标识,重复 create 动作将生成多个 app |
||
22 | * NoAutoCloseRoom: bool 类型,可选,禁止自动关闭房间。默认为 false ,即用户退出房间后,房间会被主动清理释放。 |
||
23 | * NoAutoCreateRoom: bool 类型,可选,禁止自动创建房间。默认为 false ,即不需要主动调用接口创建即可加入房间。 |
||
24 | * NoAutoKickUser: bool 类型,可选,禁止自动踢人(抢流)。默认为 false ,即同一个身份的 client (app/room/user) ,新的连麦请求可以成功,旧连接被关闭。 |
||
25 | */ |
||
26 | public function createApp($hub, $title, $maxUsers = null, $noAutoCloseRoom = null, $noAutoCreateRoom = null, $noAutoKickUser = null) |
||
50 | |||
51 | /* |
||
52 | * appId: app 的唯一标识,创建的时候由系统生成。 |
||
53 | * Title: app 的名称, 可选。 |
||
54 | * Hub: 绑定的直播 hub,可选,用于合流后 rtmp 推流。 |
||
55 | * MaxUsers: int 类型,可选,连麦房间支持的最大在线人数。 |
||
56 | * NoAutoCloseRoom: bool 指针类型,可选,true 表示禁止自动关闭房间。 |
||
57 | * NoAutoCreateRoom: bool 指针指型,可选,true 表示禁止自动创建房间。 |
||
58 | * NoAutoKickUser: bool 类型,可选,禁止自动踢人。 |
||
59 | * MergePublishRtmp: 连麦合流转推 RTMP 的配置,可选择。其详细配置包括如下 |
||
60 | Enable: 布尔类型,用于开启和关闭所有房间的合流功能。 |
||
61 | AudioOnly: 布尔类型,可选,指定是否只合成音频。 |
||
62 | Height, Width: int64,可选,指定合流输出的高和宽,默认为 640 x 480。 |
||
63 | OutputFps: int64,可选,指定合流输出的帧率,默认为 25 fps 。 |
||
64 | OutputKbps: int64,可选,指定合流输出的码率,默认为 1000 。 |
||
65 | URL: 合流后转推旁路直播的地址,可选,支持魔法变量配置按照连麦房间号生成不同的推流地址。如果是转推到七牛直播云,不建议使用该配置。 |
||
66 | StreamTitle: 转推七牛直播云的流名,可选,支持魔法变量配置按照连麦房间号生成不同的流名。例如,配置 Hub 为 qn-zhibo ,配置 StreamTitle 为 $(roomName) ,则房间 meeting-001 的合流将会被转推到 rtmp://pili-publish.qn-zhibo.***.com/qn-zhibo/meeting-001地址。详细配置细则,请咨询七牛技术支持。 |
||
67 | */ |
||
68 | public function updateApp($appId, $hub, $title, $maxUsers = null, $mergePublishRtmp = null, $noAutoCloseRoom = null, $noAutoCreateRoom = null, $noAutoKickUser = null) |
||
96 | |||
97 | /* |
||
98 | * appId: app 的唯一标识,创建的时候由系统生成。 |
||
99 | */ |
||
100 | public function getApp($appId) |
||
110 | |||
111 | /* |
||
112 | * appId: app 的唯一标识,创建的时候由系统生成 |
||
113 | */ |
||
114 | public function deleteApp($appId) |
||
124 | |||
125 | /* |
||
126 | * 获取房间的人数 |
||
127 | * appId: app 的唯一标识,创建的时候由系统生成。 |
||
128 | * roomName: 操作所查询的连麦房间。 |
||
129 | */ |
||
130 | public function getappUserNum($appId, $roomName) |
||
140 | |||
141 | /* |
||
142 | * 踢出玩家 |
||
143 | * appId: app 的唯一标识,创建的时候由系统生成。 |
||
144 | * roomName: 连麦房间 |
||
145 | * userId: 请求加入房间的用户ID |
||
146 | */ |
||
147 | public function kickingPlayer($appId, $roomName, $userId) |
||
157 | |||
158 | /* |
||
159 | * 获取房间的人数 |
||
160 | * appId: app 的唯一标识,创建的时候由系统生成。 |
||
161 | * prefix: 所查询房间名的前缀索引,可以为空。 |
||
162 | * offset: int 类型,分页查询的位移标记。 |
||
163 | * limit: int 类型,此次查询的最大长度。 |
||
164 | * GET /v3/apps/<AppID>/rooms?prefix=<RoomNamePrefix>&offset=<Offset>&limit=<Limit> |
||
165 | */ |
||
166 | public function listRooms($appId, $prefix = null, $offset = null, $limit = null) |
||
190 | |||
191 | /* |
||
192 | * appId: app 的唯一标识,创建的时候由系统生成。 |
||
193 | * roomName: 房间名称,需满足规格 ^[a-zA-Z0-9_-]{3,64}$ |
||
194 | * userId: 请求加入房间的用户 ID,需满足规格 ^[a-zA-Z0-9_-]{3,50}$ |
||
195 | * expireAt: int64 类型,鉴权的有效时间,传入以秒为单位的64位Unix绝对时间,token 将在该时间后失效。 |
||
196 | * permission: 该用户的房间管理权限,"admin" 或 "user",默认为 "user" 。当权限角色为 "admin" 时,拥有将其他用户移除出房间等特权. |
||
197 | */ |
||
198 | public function appToken($appId, $roomName, $userId, $expireAt, $permission) |
||
211 | } |
||
212 |
Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.
Let’s take a look at an example:
As you can see in this example, the array
$myArray
is initialized the first time when the foreach loop is entered. You can also see that the value of thebar
key is only written conditionally; thus, its value might result from a previous iteration.This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.