У меня есть PHP-скрипт, который выдает следующую ошибку
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное '[', ожидание ')' в /home/masked/public_html/masked/AutoLoader.php в строке 20
(обратите внимание, что я замаскировал некоторые части каталога, поскольку они соответствуют личной информации.)
(строка 20 — это spl_autoload_register([$autoloader, 'load']); найдено в функции регистрации.
Я использую PHP 5.5. Я также пробовал его с PHP 5.3.27 и получил точно такой же результат.
код ниже
run.php
require_once 'AutoLoader.php';
AutoLoader::register('src');
Автозагрузчик.php
/**
* A basic PSR style autoloader
*/
class AutoLoader
{
protected $dir;
protected $ext;
public function __construct($dir, $ext = '.php')
{
$this->dir = rtrim($dir, DIRECTORY_SEPARATOR);
$this->ext = $ext;
}
public static function register($dir, $ext = '.php')
{
$autoloader = new static($dir, $ext);
spl_autoload_register([$autoloader, 'load']);
return $autoloader;
}
public function load($class)
{
$dir = $this->dir;
if ($ns = $this->get_namespace($class)) {
$dir .= DIRECTORY_SEPARATOR.str_replace('\\', DIRECTORY_SEPARATOR, $ns);
}
$inc_file = $dir.DIRECTORY_SEPARATOR.$this->get_class($class).$this->ext;
if (file_exists($inc_file)) {
require_once $inc_file;
}
}
// Borrowed from github.com/borisguery/Inflexible
protected static function get_class($value)
{
$className = trim($value, '\\');
if ($lastSeparator = strrpos($className, '\\')) {
$className = substr($className, 1 + $lastSeparator);
}
return $className;
}
// Borrowed from github.com/borisguery/Inflexible
public static function get_namespace($fqcn)
{
if ($lastSeparator = strrpos($fqcn, '\\')) {
return trim(substr($fqcn, 0, $lastSeparator + 1), '\\');
}
return '';
}
}
[]
(согласноspl_autoload_register([$autoloader, 'load']);
) требуется PHP ›= 5.4 - person Mark Baker   schedule 05.04.2014echo phpversion()
в самое начало файлаrun.php
, чтобы убедиться, что это действительно PHP 5.5? - person raina77ow   schedule 05.04.2014php -i | grep "PHP Version"
из cli или с помощью phpinfo() из Интернета. - person Mark Baker   schedule 05.04.2014[$autoloader, 'load']
наarray($autoloader, 'load')
? - person raina77ow   schedule 05.04.2014php -v
(илиecho phpversion();
в файле PHP). - person Sverri M. Olsen   schedule 05.04.2014