###前提・実現したいこと
現在、PHP(CakePHP)を用いてWEB上で情報管理を行うシステムを作成しています。
そのシステム上で帳票をwordで出力する必要があり、PHPWordを利用して作成しようとしています。
しかし、実際に読み込んでwordを作成しようとするとエラーがでて困っています。
###発生している問題・エラーメッセージ
Error: Class 'PhpOffice\PhpWord\Settings' not found File: C:\xampp\htdocs\パス\app\Controller\hogeController.php Line: 2258
###ソースコード
PHPWordはwordを利用しようとしているcontrollerで次のように記述して読み込んでいます
PHP
1App::import('Vendor', 'PHPWord', array ( 2 'file' => 'phpword' . DS . 'PhpWord.php' 3));
また、実際に利用する箇所では次のようにしています
PHP
1$word = new \PhpOffice\PhpWord\PhpWord(); // エラーはここで発生している 2$document = $word->loadTemplate($path);
###ファイル構成
PHPWordの各ファイルはapp/Vendor内に次のように配置されています。
app ┗ vendor ┗ phpword ┗ Collection ┗ Element ┗ Escaper ┗ Exception ┗ Metadata ┗ Reader ┗ resources ┗ Shared ┗ SimpleType ┗ Style ┗ Writer ┗ IOFactory.php ┗ Media.php ┗ PhpWord.php ┗ Settings.php ┗ Style.php ┗ Template.php ┗ TemplateProcessor.php
###試したこと
SettingsクラスをPHPWord読み込み時と同様に読み込んだ
PHP
1App::import('Vendor', 'PHPWord_Settings', array ( 2 'file' => 'phpword' . DS . 'Settings.php' 3));
Settingsクラスを読み込むと次のようなエラーが発生
Error: Class 'PhpOffice\PhpWord\Collection\Bookmarks' not found File: C:\xampp\htdocs\パス\app\Vendor\phpword\PhpWord.php Line: 90
このように読み込んでいけば、解決はできるかと思いますが、PhpWord.phpを見ると名前空間を利用しており、そもそもSettingsクラスを個別に読み込む必要がないと思っています。
PhpWord.phpの冒頭
PHP
1namespace PhpOffice\PhpWord; 2 3use PhpOffice\PhpWord\Element\Section; 4use PhpOffice\PhpWord\Exception\Exception; 5
###質問内容
CakePHPでこのようにいちいち読み込むことをせずに、PHPWordを利用する方法はありますでしょうか?
CakePHPと名前空間の相性が悪く、できないというのであれば他の方法を考えます。
###補足情報(言語/FW/ツール等のバージョンなど)
windows10
PHP 5.6.12
CakePHP 2.7.7
PHPWord 0.13.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/18 05:55