Использование плагина CakePHP 3.0

В настоящее время я создаю новое приложение CakePHP с версией 3.0.0-RC1 и пытаюсь установить и использовать плагин jasig/phpCAS. Используя это руководство, я выполнил следующую команду из командной строки: composer require jasig/phpcas

Это правильно копирует файлы jasig/phpcas в каталог поставщика моего приложения, но один из других файлов, который, по словам руководства, должен быть обновлен (vendor/cakephp-plugins.php), даже не существует.

У меня были трудности с доступом к плагину. Я хочу иметь возможность вызывать его статические методы, но постоянно получаю ошибки вида: Error: Class 'App\Controller\phpCAS' not found. (Точный каталог в ошибке меняется в зависимости от того, откуда я вызываю метод.)

Я не знаю, связано ли это с отсутствием файла cakephp-plugins.php или с тем, что я неправильно вызываю плагин. Насколько я понимаю, если плагин загружен, я должен просто иметь возможность вызывать для него статические методы следующим образом: phpCAS::methodName()


person Jozomby    schedule 29.01.2015    source источник
comment
При получении сообщений об ошибках всегда показывайте полное, точное сообщение об ошибке!   -  person ndm    schedule 29.01.2015
comment
Спасибо за предложение. Я не включил его, потому что буквально единственное, что говорит об ошибке, это «Класс ___ не найден», но я добавил его выше на случай, если это поможет.   -  person Jozomby    schedule 29.01.2015
comment
Это особенно полезно в этом случае, поскольку дает понять, что, где и как вы неправильно нацеливаете класс.   -  person ndm    schedule 29.01.2015


Ответы (1)


Прежде всего, jasig/phpcas не является плагином CakePHP. И файл vendor/cakephp-plugins.php создается установщиком плагинов CakePHP, поэтому, если вы не видите такого файла, то, похоже, вы либо еще не устанавливали никаких плагинов, либо используете не последнюю версию установщика, так как создание этот файл был представлен совсем недавно.

Что касается ошибки о том, что класс не найден, вам не хватает начального разделителя пространства имен (\phpCAS::methodName()) для доступа к классу в глобальном пространстве имен, соответственно, вам не хватает правильного импорта (use phpCAS;), который сделал бы класс доступным в текущем пространстве имен.

Если вы не знакомы с пространствами имен, вы можете начать с: http://php.net/namespaces< /а>

person ndm    schedule 29.01.2015
comment
Спасибо за ответ. В моей копии Cake есть установщик плагинов (при условии, что это поставщик\cakephp\plugin-installer), и я нашел плагин jasig/phpcas по ссылке на пакет, которая была предоставлена ​​в документации CakePHP 3.0. Кажется, в этой области все работает нормально. Добавление импорта, похоже, исправило ситуацию для меня. Спасибо вам за помощь; Я потратил много времени, пытаясь выяснить, нужен ли мне импорт и как это сделать, и ничего не нашел. - person Jozomby; 29.01.2015
comment
@Jozomby Обновил мой ответ об установщике плагинов, он вводил в заблуждение. packagist — это глобальный репозиторий композиторов, он подходит для всего! который использует композитор, а не только CakePHP (и его плагины), который является одним из многих проектов, использующих композитор в качестве менеджера зависимостей. - person ndm; 29.01.2015