Класс ‘PHPOffice PHPWord TemplateProcessor’ не найден

#php #composer-php #phpword #phpoffice

#php #композитор-php #phpword #phpoffice

Вопрос:

У меня есть PHPWORD в каталоге /libraries /PHPOffice / PHPWord /. Я пытаюсь использовать его в совершенно другой части приложения (веб-сайт Joomla) следующим образом:

 require_once JPATH_LIBRARIES.'/vendor/autoload.php'; //composer
require_once JPATH_LIBRARIES.'/PhpOffice/PhpWord/PhpWord.php';
$Wzor = new PhpOfficePhpWordTemplateProcessor(JPATH_ROOT.'/images/powiadomienia/SzablonPowiadomienia.docx');
  

Но я получаю ошибку:

Класс ‘PHPOffice PHPWord TemplateProcessor’ не найден

Я перепробовал много вариантов и путей, я пытался прочитать онлайн-справку, но всегда с одним и тем же результатом. Могу ли я попросить о некоторой помощи и руководстве? Как я могу включить такой класс в свой скрипт?

Комментарии:

1. Почему бы вам просто не загрузить его как часть Composer? github.com/PHPOffice/PHPWord#installation

Ответ №1:

Используйте /vendor папку, а не «библиотеки» (смотрите почему ниже).

В корневой папке вашего проекта:

 composer require phpoffice/phpword
  

Затем:

 require_once JPATH_ROOT.'/vendor/autoload.php';
$Wzor = new PhpOfficePhpWordTemplateProcessor(JPATH_ROOT.'/images/powiadomienia/SzablonPowiadomienia.docx');
  

ПРЕДУПРЕЖДЕНИЕ:

НИКОГДА не запускайте «composer require» внутри папки «/libraries», поскольку это ПРИВЕДЕТ К УДАЛЕНИЮ ядра Joomla в более поздних версиях. Это происходит потому, что люди использовали эту папку, и чтобы подчеркнуть, что ее не следует использовать, основная команда Joomla удалила из нее файл composer.json. Из-за этого ядро Joomla стирается при попытке добавить библиотеки в эту папку.


Почему бы не использовать «/libraries»?

Из https://docs.joomla.org/J3.x:Using_Composer_with_Joomla:

Можете ли вы установить какие-либо дополнительные библиотеки через Composer?

На данный момент нет в Joomla! 3.4. В долгосрочной перспективе целью CMS является возможность загрузки дополнительных пакетов. Чтобы подчеркнуть это, мы пока не будем выпускать файл composer.json в основной Joomla! Скачать.

Комментарии:

1. Спасибо. Но я не использовал composer напрямую. PHPWord уже был в каталоге библиотеки. Я просто искал способ включить класс в скрипт. Из того, что я нашел, JLoader::registerNamespace был просто необходим для поиска этих классов.

Ответ №2:

Из того, что я выяснил, проблема заключалась в использовании фреймворка — Joomla. У него есть свой собственный метод для обнаружения классов. Мне пришлось поместить файлы в папку / libraries / src, а затем поместить этот код для использования этого класса:

 JLoader::registerNamespace('PhpOffice', JPATH_LIBRARIES . '/src');
$objPHPWord = new PhpOfficePhpWordPhpWord();
  

Ответ №3:

вам необходимо установить phpoffice / phpword с помощью composer

 composer require phpoffice/phpword