2016-05-10 2 views
1

Я пытаюсь использовать Cake \ ORM \ TableRegistry в своем коде. Composer успешно установлен, но код показывает эту ошибку.Cake ORM TableRegistry не работает

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 

Где проблема? Я использую ОС Windows с версии 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; 
} 

ответ

3

Parse error: ... in ... datasource\EntityTrait.php on line 528

code on that line является:

$class = static::class; 

Это не ошибка, вызванная вашим использованием поставщика code - php не удается разобрать файл.

Версия PHP слишком стара

Хотя the composer file for the datasource репо не имеют какие-либо требований РНР composer file for cakephp/cakephp, который, что репо строится из, делает:

"require": { 
    "php": ">=5.5.9", 

В этом случае проблема заключается в том, что код использует features introduced in 5.5, а именно:

Since PHP 5.5, the class keyword is also used for class name resolution. You can get a string containing the fully qualified name of the ClassName class by using ClassName::class. This is particularly useful with namespaced classes.

Example #9 Class name resolution

<?php 
namespace NS { 
    class ClassName { 
    } 

    echo ClassName::class; 
} 
?> 

с версии PHP в вопросе 5.4.7 он не имеет эта функция и код рассматриваются как ошибка синтаксического анализа.

Простейшим решением является обновление php для удовлетворения требований к версии CakePHP. Note that 5.4 is no longer supported:

5.4 is EOL, 5.5 is approaching EOL

+0

шесть Но когда я пытался обновить до 5.5. Я получаю ошибку, что «php.exe не является допустимым приложением win32». –

+0

six Каково решение ошибки, описанной в последнем сообщении? –

+0

ed stop using windows :)? К сожалению, я не использую (или не рекомендую использовать) окна, но проблемы с обновлением напрямую не связаны с этим вопросом. – AD7six

Смежные вопросы