
こちらのページを参考に表示に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ランキング
-
require_onceでファイルが開け...
-
FTPコマンドでディレクトリごと...
-
php.iniって。。
-
ファイル一覧表(LAN内の別PC)
-
フォントの色を変えるには?
-
「旭日中綬賞 」とはどんな賞で...
-
PHPのif文でその処理を途中で抜...
-
PHP postgres でロールバック...
-
phpのプログラムエラー
-
phpのswitch文のcaseで
-
mod_phpとcgi版phpはなにがどう...
-
mb_send_mail関数が利用出来ない
-
PDOとmysql_real_escape_str
-
require_once で読み込まれたか?
-
CakePHP2のCronでのShellを使う...
-
APIで出てきたXMLをPHPで表示さ...
-
PHPで吐き出した画像にリンクを...
-
複数ページのセッションの送り方
-
PHPでの別のサーバーのテキスト...
-
phpでmysql接続について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPMailerのサンプルコードのエ...
-
ImageCreate関数が undefined f...
-
pdflib /pdi の拡張関数が有効...
-
PHP認証がProxy越しだと通らな...
-
PHP+MySQL利用でDB登録に不具...
-
CodeIgniter/index.phpにアクセ...
-
mb_language("Japanese");でエ...
-
php5のrename()は日本語をリネ...
-
Syntax Error Apach PHP W7
-
仮想フレームバッファXvfb上でf...
-
marty3のvariableFilter
-
PostgreSQLに接続できません(Wi...
-
index.phpが真っ白で表示される...
-
PHPで.htaccessを設定するとエ...
-
PHP MySQLでエラーがでてしまい...
-
constでパースエラー
-
Webシステムをローカルで再現し...
-
ロリポップでZendを導入できま...
-
xoopsのインストール時に生じる...
-
PHPでのエラーチェックについて
おすすめ情報