2016-05-10 4 views
1

Ich versuche Cake \ ORM \ TableRegistry in meinem Code zu verwenden. Composer wurde erfolgreich installiert, aber der Code zeigt diesen Fehler an.Kuchen ORM TableRegistry funktioniert nicht

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 

Wo ist das Problem? Ich bin mit OS Windows mit PHP-Version 5.4.7

-Code

<?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; 
} 

Antwort

3

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

Die code on that line ist:

$class = static::class; 

Dies ist kein Fehler, der durch Ihre Nutzung des Verkäufers verursacht code - php kann die Datei nicht analysieren.

Die Version von PHP zu alt ist

Während the composer file for the datasource Repo keine PHP-Anforderungen hat, die composer file for cakephp/cakephp, die das Repo aus gebaut wird, tut:

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

In diesem Fall ist das Problem, dass die Code nutzt features introduced in 5.5, nämlich:

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; 
} 
?> 

Seit der Version von pHP in der Frage ist 5.4.7 es muss nicht Diese Funktion und der Code werden als Parse-Fehler behandelt.

Die einfachste Lösung besteht darin, PHP zu aktualisieren, um die Versionsanforderungen von CakePHP zu erfüllen. Note that 5.4 is no longer supported:

5.4 is EOL, 5.5 is approaching EOL

+0

sechs Aber als ich versuchte, auf 5,5 zu aktualisieren. Ich erhalte den Fehler, dass "php.exe keine gültige Win32-Anwendung ist". –

+0

sechs Was ist die Lösung für den Fehler in der letzten Nachricht beschrieben dann? –

+0

ed stop mit windows :)? Entschuldigung, ich benutze (oder befürworte nicht) Windows, aber Probleme beim Aktualisieren sind nicht direkt mit dieser Frage verbunden. – AD7six