composerでautoloadを設定後、Smartyをインストールした場合について教えてください。
[環境]
CentOS7.2
composer1.8.6
Smarty3.1
php7.1
簡単なMVCフレームワークを作っています。
Controller、Modelの名前空間をそれぞれ作成し、composerでautoloadの設定をした段階で、
テンプレートエンジンはSmartyを使おうと考え、composerからインストールしました。
### composer.json { "autoload": { "psr-4": { "Controller\": "app/controllers/", "Model\" : "app/models/", "Core\" : "app/core/" } }, "require": { "smarty/smarty": "*" } }
Smartyインストール後、名前空間:ControllerからSmartyを呼び出そうとすると次のエラーが表示され、
Smartyクラスを読み込めません。
Fatal error: Uncaught Error: Class 'Controller\Smarty' not found
エラーとなっているのは以下のコードでSmartyをnewしている箇所です。
php
1namespace Controller; 2 3public class AppController { 4 public function __construct() { 5 // Request設定 6 $this->request = new Request(); 7 8 // Smartyテンプレート設定 9 $smarty = new Smarty(); 10 // 以下、Smartyの設定... 11 } 12}
色々調べた結果、composerで設定したautoloadとは別に、Smartyでspl_autoload_registerを登録しているみたいです。
なのでvendor/autoload.phpをrequireする前に、Smarty.class.phpをrequireすれば、Smartyのautoloadが優先されて、うまくいくらしいのですが、結果は同じでした。
名前空間に属していないクラスからだと正常に呼び出せるのですが、できればそうしたくはないのです。
Smartyを名前空間付きのクラスからautoloadできないのでしょうか?
宜しくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/15 01:40
2019/07/16 00:40
2019/07/25 09:49