2015-06-03 9 views
9

Aktualny Travis-CI PHP7 buduje rzucać się następujący błąd podczas wykonywania następujący kod:PHP 7 Błąd krytyczny: static :: klasa nie może być używany do rozpoznawania nazw klasy kompilacji

PHP 7 Fatal error: static::class cannot be used for compile-time class name resolution

trait EloquentValidatingTrait 
{ 
    // Some declarations skipped 
/** 
* Eloquent will call this on model boot 
*/ 
public static function bootEloquentValidatingTrait() 
{ 
    // Calling Model::saving() and asking it to execute assertIsValid() before model is saved into database 
    $savingCallable = [static::class, 'saving']; 
    $validationCallable = [static::class, 'assertIsValid']; 
    forward_static_call($savingCallable, $validationCallable); 
} 

jest to, że tymczasowy błąd lub przyszłą funkcję, którą przegapiłem? Uwagi poniżej tego RFC mówi, że powinien działać (i robi to w 5,5 i 5,6).

+0

Nie jestem pewien, czy jest to poprawne pytanie, ale czy masz tę funkcję wewnątrz klasy Model lub czy jest to klasa, która rozszerza Model? –

+0

@CayceK Jest to metoda cechy używana przez model. –

+0

Czy chcesz wykazać oszczędności? –

Odpowiedz

7

Poprawiono ten błąd poprzez http://git.php.net/?p=php-src.git;a=commitdiff;h=1d3f77d13d2b457bdf1bc52045da4679741e65cb

Błędem było proste ... miałem w czasie kompilacji optymalizacji stałą rozdzielczość ustawić tryb, aby wymusić uda or die (prostą logiczną do wywołania funkcji). Ten tryb jest potrzebny do wyrażeń statycznych (np. const FOO = static::class; musi zawieść).

Ustaw to na zero, a teraz działa dobrze. Po prostu pobierz najnowszego mistrza, aby naprawić.

+0

Dzięki;) To nie była moja wersja PHP, ale Travis-CI. Tak więc, poczekam na nich, aby pobrać najnowsze źródło. –

Powiązane problemy