larver php7.0,【轻知识】Laravel5.2更新到php7.2

更新到php7.2

laravel 5.2。本地开发环境php7.1,线上php7.0。要把php7.0更新到php7.2。

目前遇到的问题就是each、count 这两个。1.each 废弃2.count 只能 countable type 的变量

以下是遇到少量小问题。做个记录。

1. ModulesServiceProvider.php (这个是我自己的文件) The each() function is deprecated. This message will be suppressed on further callswhile (list(, $module) = each($modules)) { // Load the routes for each of the modules if (file_exists(__DIR__ . '/' . $module . '/routes.php')) { include __DIR__ . '/' . $module . '/routes.php'; } // Load the views if (is_dir(__DIR__ . '/' . $module . '/Views')) { $this->loadViewsFrom(__DIR__ . '/' . $module . '/Views', $module); } }

php 7.2 废弃了each 。while(...each..)改成foreah 就可

修改为foreach ($modules as $module) { // Load the routes for each of the modules if (file_exists(__DIR__ . '/' . $module . '/routes.php')) { include __DIR__ . '/' . $module . '/routes.php'; } // Load the views if (is_dir(__DIR__ . '/' . $module . '/Views')) { $this->loadViewsFrom(__DIR__ . '/' . $module . '/Views', $module); } }

2. ErrorException in Builder.php line 772:

count(): Parameter must be an array or an object that implements Countable

问题定位到了。in Builder.php line 772

at HandleExceptions->handleError('2', 'count(): Parameter must be an array or an object that implements Countable', 'F:\iProject\afp\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php', '772', array('query' => object(Builder), 'boolean' => 'and'))

问题源public function addNestedWhereQuery($query, $boolean = 'and') { if (count($query->wheres)) { $type = 'Nested'; $this->wheres[] = compact('type', 'query', 'boolean'); $this->addBinding($query->getBindings(), 'where'); } return $this; }

我打印

puctywwkoge212query->wheres 为 NULL。count(NULL) 在其余版本结果为 0.

修改为if ($query->wheres != NULL && count($query->wheres)) { $type = 'Nested'; $this->wheres[] = compact('type', 'query', 'boolean'); $this->addBinding($query->getBindings(), 'where'); }

但是这样就动了框架了。我以为新框架会对这段做改变。我之后下载了laravel 5.7的框架。这段代码没变。

3.当我开始测脚本的时候$ APP_ENV="test" php72 artisan CategoryCroncount(): Parameter must be an array or an object that implements Countab

定位。在解决异常的地方打印行数与文件int(67)string(68) "F:\iProject\afp\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php"

找到代码public function release(EasyHandle $easy) { $resource = $easy->handle; unset($easy->handle); if (count($this->handles) >= $this->maxHandles) { curl_close($resource);

跟上面一样。$this->handles为null所以才报错了。兼容方式跟问题2一样。

参考:

*《php 7.2 少量注意事项.,php7.2注意事项》http://www.bkjia.com/PHPjc/1235440.html

*《从PHP 7.1.x 移植到 PHP 7.2.x》http://php.net/manual/zh/migration72.php 可以看官网文档理解下,新特性以及兼容等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值