![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こちらのページを参考に表示にsmartyを入れてみました。
http://www.phppro.jp/school/smarty/vol12/2
※smartyは3.0.6でzendは1.11.3です
indexActionで格納した変数はtplで表示されているので組込は
成功しているかと思うのですが下記のようなエラーが表示されます。
Warning: include_once(Smarty\Internal\Data.php)
Warning: include_once(Smarty\Internal\Template.php)
ファイルを確認すると確かに該当データがありません。
smarty3なのでフォルダ名がInternalではなくsyspluginsに変わって
いる事が原因かと思うのですがどのように対処すればいいでしょうか?
No.1ベストアンサー
- 回答日時:
PHPには、autoloadといって、未定義のクラスのインスタンスを生成しようとした場合に、自動的にそのクラスがあるファイルを取得する記述が出来ます。
<?php
spl_autoload_register('my_autoload');
function my_autoload($class_name){
require_once $class_name . ".php";
}
$instance = new MyClassName();
?>
このようにすると、スクリプト中未定義であるMyClassNameをnewすると、存在しないので、autoloaderとして登録してある、my_autoload関数が呼ばれ、その中に記述してあるように、[MyClassName.php]をインクルードするように処理しています。
(当然、MyClassName.phpファイルが存在しなければエラーでこける。)
また、複数のautoloadが登録されている場合、
<?php
spl_autoload_register('my_autoload_one');
spl_autoload_register('my_autoload_two');
//こんな感じで。
?>
最初に登録されたものから順番に実行されます。
っていう前提のもと、ZendFrameworkは、Zend_Loaderとかそんなクラスでautoloadを登録しています。
そして、Zendはどの様に呼ぶかというと、
Zend_Http_Clientというクラスがあったとすると、「_」を「/」に変更して、拡張子をつけた物、つまり、
Zend/Http/Client.php
というディレクトリを探してくるように記述されています。
ソレとは全く別のルールでSmarty3は、自分のプラグインを呼ぶときに、例えば、テンプレート中にdataというプラグインを呼ぶ場合、
Smarty_Internal_Dataクラスを呼びます。そうすると、Smarty3が自前で実装しているautoloadでは、
sysplugin/smarty_internal_data.php
というディレクトリを探してくるように記述されています。
以上のことから、結論として、Zendがもっているautoloadが、最初に登録されてしまっているために、Smarty3のもっているautoloadが後回しにされてしまっているため、エラーが出ているものと推測出来ます。
従って、
dcx147さんが参考にされたURLに記載の15行目、
Zend_Loader::registerAutoload();
と記述のある部分よりも前に、23行目にある
require_once( SMARTY_DIR .'Smarty.class.php' );
を持ってくると、改善しそうです。
如何でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- その他(プログラミング・Web制作) カラーミーのSmarty構文について 1 2022/10/09 13:55
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
zendにsmarty3の組込で
-
mb_language("Japanese");でエ...
-
【初歩】 極単純なFOR文がなぜ...
-
phpで処理分岐して別のphpを呼...
-
[php初心者]サイトを見てデータ...
-
onedrive にexcelファイルをア...
-
別ファイルの変数を呼び出した...
-
CFileDialogの最初のディレクト...
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
php文字列中のシングルクオート...
-
3つ以上の論理積は利用可能なの...
-
ファイル選択ダイアログで選択...
-
バッチを用いたフォルダの自動移動
-
PHP MySQLに画像を直接保存
-
phpの中でphpを書けないか
-
PHPからMSSQLへの接続結果の文...
-
PHPでネットワークドライブのop...
-
phpにcssを適応させたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
PHPMailerのサンプルコードのエ...
-
仮想フレームバッファXvfb上でf...
-
pdflib /pdi の拡張関数が有効...
-
Pear::QuickFormの代わりにな...
-
sformmmail2を使ったお問い合わ...
-
値の受け渡しが出来ない。
-
smartyについて
-
PHPでのAmazonAPI認証スクリプ...
-
xoopsのインストール時に生じる...
-
MAMPでsqlをインポートできない
-
soapclient
-
メール送信
-
phpで処理分岐して別のphpを呼...
-
何故unexpected ';'が出るので...
-
HTMLからPHPを呼び出すには
-
Parse errorが表示されない
-
PHP認証がProxy越しだと通らな...
-
セッションを使ったログインペ...
-
【初歩】 極単純なFOR文がなぜ...
おすすめ情報