我正在尝试在我的代码中使用Cake \ ORM \ TableRegistry。 Composer已成功安装,但代码显示此错误。
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in C:\xampp\htdocs\ORM\vendor\cakephp\datasource\EntityTrait.php on line 528
问题出在哪里? 我正在使用php版本5.4.7的操作系统窗口
代码
<?php
require_once './vendor/autoload.php';
use Cake\Datasource\ConnectionManager;
use Cake\ORM\TableRegistry;
ConnectionManager::config('default', [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'database' => 'test',
'username' => 'root',
'password' => '',
'cacheMetaData' => false // If set to `true` you need to install the optional "cakephp/cache" package.
]);
$articles = TableRegistry::get('student');
foreach ($articles->find() as $article) {
echo $article->name;
}
答案 0 :(得分:3)
解析错误:...在第528行的... datasource \ EntityTrait.php
$class = static::class;
这不是因使用供应商代码而导致的错误 - php 无法解析文件。
虽然the composer file for the datasource repo没有php要求,但是{repo的构建来自composer file for cakephp/cakephp的确是:
"require": {
"php": ">=5.5.9",
在这种情况下,问题是代码使用features introduced in 5.5,即:
自PHP 5.5起,class关键字也用于类名 解析度。您可以获取包含完全限定名称的字符串 使用ClassName :: class的ClassName类。这是特别的 对命名空间类有用。
示例#9班级名称解析
<?php namespace NS { class ClassName { } echo ClassName::class; } ?>
由于问题中的php版本是5.4.7,因此它没有此功能,并且代码被视为解析错误。
最简单的解决方案是升级php以满足CakePHP的版本要求。 Note that 5.4 is no longer supported: