【问题标题】:Parse error: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE) in Laravel project解析错误:语法错误,意外的 'const' (T_CONST),期望 Laravel 项目中的变量 (T_VARIABLE)
【发布时间】:2019-01-05 04:06:38
【问题描述】:

在 Bluehost cPanel 中上传后,我的 Laravel 项目中出现以下错误。但是在本地服务器中没有错误。

解析错误:语法错误,意外的 'const' (T_CONST),预期变量 (T_VARIABLE)

这里是代码

<?php
namespace Doctrine\DBAL;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Exception\InvalidArgumentException;
use Closure;
use Exception;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Driver\Connection as DriverConnection;
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Cache\ResultCacheStatement;
use Doctrine\DBAL\Cache\QueryCacheProfile;
use Doctrine\DBAL\Cache\ArrayStatement;
use Doctrine\DBAL\Cache\CacheException;
use Doctrine\DBAL\Driver\PingableConnection;
use Throwable;
use function array_key_exists;
use function array_merge;
use function func_get_args;
use function implode;
use function is_int;
use function is_string;
use function key;
class Connection implements DriverConnection
{

public const TRANSACTION_READ_UNCOMMITTED = TransactionIsolationLevel::READ_UNCOMMITTED;

public const TRANSACTION_READ_COMMITTED = TransactionIsolationLevel::READ_COMMITTED;

public const TRANSACTION_REPEATABLE_READ = TransactionIsolationLevel::REPEATABLE_READ;

public const TRANSACTION_SERIALIZABLE = TransactionIsolationLevel::SERIALIZABLE;

public const PARAM_INT_ARRAY = ParameterType::INTEGER + self::ARRAY_PARAM_OFFSET;

public const PARAM_STR_ARRAY = ParameterType::STRING + self::ARRAY_PARAM_OFFSET;

const ARRAY_PARAM_OFFSET = 100;

protected $_conn;

protected $_config;

protected $_eventManager;

protected $_expr;

private $_isConnected = false;

private $autoCommit = true;

private $_transactionNestingLevel = 0;

private $_transactionIsolationLevel;

private $_nestTransactionsWithSavepoints = false;

private $_params = [];

private $platform;

protected $_schemaManager;

protected $_driver;

private $_isRollbackOnly = false;

protected $defaultFetchMode = FetchMode::ASSOCIATIVE;

我的本​​地服务器PHP版本是7.2.0

Bluehost PHP 版本为 7.0.0

是PHP版本相关的问题吗?

如何解决这个问题?

【问题讨论】:

  • 我投票重新提出这个问题,因为所谓的重复问题没有解决这个错误消息。对“T_CONST”的简单搜索就会发现这一点。

标签: php laravel laravel-5


【解决方案1】:

仅在 PHP 7.1 中添加了指定类常量可见性的功能,来自 manual page

注意:

从 PHP 7.1.0 开始,类常量允许使用可见性修饰符。

所以在 PHP 7.0 服务器上,

public const TRANSACTION_READ_UNCOMMITTED ...

行上不应有public。它还说

类常量的默认可见性是公开的。

所以无论如何都不需要公开。

【讨论】:

【解决方案2】:

好像你想定义一个常量变量。

我的指示是:

const CONSTANT = 'jkl';

我得到的错误:

语法错误,...中出现意外的 'const' (T_CONST)

我将该指令更改为:

define('CONSTANT', 'jkl');
echo CONSTANT;

输出:

jkl

“定义”方法的语法:

define('variable_name', 'value_of_the_variable', [case-insensitive_constant_name = true/false]);

例如。

define('CONSTANT3', 'ghi', true);
echo CONSTANT3;
define('constant3', 'ghi'); //Defining 'constant3' again will give an error.

但是

define('CONSTANT3', 'ghi');
echo CONSTANT3;
define('constant3', 'ghi'); //This won't give an error.
echo constant3;

始终记住,常规变量应在其名称前使用“$”来寻址,但常量变量应直接寻址,如我在上面的代码中所示。

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2012-05-11
    • 2015-11-19
    • 2019-05-21
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多