Closed myshero closed 6 years ago
这个问题在于那些实例变量的初始值是 null,而不是空数组,在每一个设置函数里面才初始化为空数组,使用 count() 从语义上也讲不通。也不知道为啥其他地方是用 is_null() 来判断,到这两个地方换成了判断数组的长度。
if (!is_null($this->smsMessage)) {
$payload['sms_message'] = $this->smsMessage;
}
如上所示判断其实就够了,将会在下周发一个小版本。
感谢你能够用如此丰富的信息提出这个 issue。
另外,多一句嘴,
因PHP 7.2.* 对count()的使用更加严格,报Warning错误
应该是,报了警告(warning),并不是错误(error)
已经发了一个新版,你可以 update 试试
支持的 PHP 版本: 5.3.3 ~ 5.6.x, 7.0.x 若需要兼容 PHP 5.3.3 以下版本,可以使用 v3 分支的代码。 因为运行 Composer 需要 PHP 5.3.2+ 以上版本,所以其不提供 Composer 支持, 也可以点击链接下载 v3.4.x 版本源码。
虽然已经说明支持的范围,但是为了更多的兼容和可用。 建议在SDK中判断是否为空的时候不要直接用 count() 来判别,举个栗子:
在 jpush\jpush\src\JPush\PushPayload.php 中 Line 318
运行后: PHP Warning – yii\base\ErrorException count(): Parameter must be an array or an object that implements Countable
若作如下修改则运行成功(此处仅为抛砖引玉式示例)