解析错误:语法错误,意外的“const”(T_CONST),Laravel项目中的预期变量(T_VARIABLE)

2022-08-30 22:56:53

在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

蓝色主机PHP版本是7.0.0

那个PHP版本是相关的问题吗?

如何解决这个问题?


答案 1

指定类常量可见性的功能仅在 PHP 7.1 中从手册页添加

注意:

从 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;

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


推荐