PHP语法错误:PdoConnect.php第5行意外出现'const'报错排查
解析错误:语法错误,意外出现'const'(T_CONST),预期为变量(T_VARIABLE),位于文件C:\PHP\OSPANEL\OSPanel\domains\newyearshop.ua\classes\PdoConnect.php第5行
PdoConnect.php 原代码
<?php class PdoConnect { private const HOST = 'localhost'; private const DB = 'newyear'; private const USER = 'newyear'; private const PASS = 'newyear'; private const CHARSET = 'utf8'; protected $DSN; protected $OPD; public $PDO; private function __construct() { $this->DSN = "mysql:host=" . self::HOST . ";dbname=" . self::DB . ";charset=" . self::CHARSET; $this->OPD = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ); $this->PDO = new PDO($this->DSN, self::USER, self::PASS, $this->OPD); }
问题原因及解决办法
问题根源是PHP版本不兼容:类常量的private访问修饰符是PHP 7.1才新增的特性,若当前使用的PHP版本低于7.1,就会触发该语法错误。
有两种可行解决方式:
方案1:升级PHP版本
将PHP版本升级到7.1或更高,可直接保留原代码中private const的写法,无需修改代码。方案2:修改代码适配低版本PHP
去掉类常量前的private修饰符,PHP7.1之前的版本中,类常量默认允许类内部及子类访问,修改后的代码如下:
<?php class PdoConnect { const HOST = 'localhost'; const DB = 'newyear'; const USER = 'newyear'; const PASS = 'newyear'; const CHARSET = 'utf8'; protected $DSN; protected $OPD; public $PDO; private function __construct() { $this->DSN = "mysql:host=" . self::HOST . ";dbname=" . self::DB . ";charset=" . self::CHARSET; $this->OPD = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ); $this->PDO = new PDO($this->DSN, self::USER, self::PASS, $this->OPD); }
内容的提问来源于stack exchange,提问作者bodis_
相关产品推荐
相关产品推荐

