こちらのページを参考に表示に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を探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
PHPMailerのサンプルコードのエ...
-
require_onceについて
-
marty3のvariableFilter
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
フォントの色を変えるには?
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
php,mysqlにて画像パス保存/表...
-
libxml2のインストール
-
Localeクラスについて
-
CSV出力にHTMLが入ってしまう
-
手作業で埋め込んだ、UserForm1...
-
Subversionで、ファイルをリネ...
-
PHPでメール送信する際の送信数...
-
サーバ無しでphpを動作させる
-
PHPの文字化けした文字だけ削除...
-
C# メール送信ついて困っています
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
PHPMailerのサンプルコードのエ...
-
marty3のvariableFilter
-
PHPの実行の際、パスが化ける
-
PHP認証がProxy越しだと通らな...
-
Syntax Error Apach PHP W7
-
pdflib /pdi の拡張関数が有効...
-
csobjは削除しても平気??
-
smartyについて
-
仮想フレームバッファXvfb上でf...
-
Pear::QuickFormの代わりにな...
-
sql文について質問です。エラー...
-
たまに$_REQUESTの値が消える
-
zendにsmarty3の組込で
-
mb_language("Japanese");でエ...
-
PostgreSQLに接続できません(Wi...
-
php5のrename()は日本語をリネ...
-
index.phpが真っ白で表示される...
-
sformmmail2を使ったお問い合わ...
-
SQLiteってcloseする必要あるん...
おすすめ情報