日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP事はじめ » assignが未定義エラーについて

assignが未定義エラーについて

ページ: 1

投稿者 投稿
会員
登録者: 1 2009
返信数: 7
初めてこちらに書き込みさせていただきます。

PHPを勉強して間もなく、Smartyを使用してPHPを勉強しようとしています。
サーバ環境は、LAMPサーバを構築しています。

下記のソースからエラーが発生します。

php
------------------------------------------------------
<?php
require_once("Smarty/Smarty.class.php");
$o_smarty->template_dir="../templates";
$o_smarty->compile_dir="../templates_c";
$o_smarty->assign("name","World");
$o_smarty->display("hello.tpl");
?>
------------------------------------------------------


tpl
------------------------------------------------------
<html>
<head>
<title>Hell,World!</tilte>
</head>
<body>
Hello,{$name}!
</body>
</html>
------------------------------------------------------

apache error
PHP Fatal error: Call to undefined method stdClass::assign()


よろしくお願いします。
会員
登録者: 10 2007
返信数: 71
実は私、Smartyを知らないので詳しいことはわかりませんが・・・ ;)

この掲示板の「PHP事始め」のスレッド「smartyの使い方」を参照してみました。
もしかしたらrequire_once()行の後に、このような行が必要ではありませんか?。
<?php
require_once("Smarty/Smarty.class.php");
$o_smarty = new smarty();
$o_smarty->template_dir="../templates";
(以下略)

詳しいことはSmartyに慣れていらっしゃる方にお願いしたいです。
またphpマニュアルの「クラスとオブジェクト」の章を参考にしても良いかと思います。
会員
登録者: 1 2009
返信数: 7
kona@mさん、ご返信いただきありがとうございます。
早速、ご指摘いただいた部分のソースを追加してみましたが、同様のエラーでうまく動いてくれませんでした。。。

Smartyの部分のご質問なので、ここに書き込みすることがお門違いでした。。

もう少し、自力でがんばってみます。ありがとうございます!
管理者
登録者: 10 2005
返信数: 38
ここで問題ないですよ
指摘を受けて修正したコードを見せてください
もともとのソースは個人的にはPHPは想定どおりのエラーを出していますが,kona@mさんのご指摘で
assignに関しては問題は出てこなくなるはずだと思います.
会員
登録者: 1 2009
返信数: 7
ご返信ありがとうございます。
こちらで、良かったのですね。

早速kona@mさんにご指摘いただいたところを修正してやってみたました。
assignのエラーは出てこなくなったのですが、
別の不具合が、発生しました。

内容としては、
IEで表示した際に、「Hello,{$name}!」と変数がそのまま表示されるようになってしまいました。。

おそらく文字コードの関係でリミタリが正常に認識できていないとおもったので、
リミタリを、これから{→{{へ変更してみたのですが、同様に表示されてしまい。
現在、お手上げ状態です。。。

ソースはすべて、UTF-8で書いており、UTF-8で勉強していこうと思っています。

なにか助言など、いただけると幸いです。
宜しくお願いいたします。
管理者
登録者: 10 2005
返信数: 38
疑ってしまってすみませんが,UTF-8のつもりでUCS-2とかでテンプレートを保存してしまっているとかないですか?

#以前知人がやっちゃったミスです
会員
登録者: 1 2009
返信数: 7
ご返信ありがとうございます。

いあいあ、全然疑ってくださいw

確認したのですが、やはりUTF-8でソースは作っていますね。

一応、作成するときの手順としましては、
EmEditorを使用していて、保存するときにUTF-8にして、保存しています。

テンプレートファイルもPHPファイルもUTF-8で書いているのですが、
もしかして、テンプレートファイルとPHPファイルの文字コードって、違うコードで書くのが一般的なんでしょうか?

すみません。結構、長いスレになってしまいましてw
よろしくお願いいたします。
会員
登録者: 1 2009
返信数: 7
問題解決しましたので、書き込みいたします。
原因は、やはり文字コードでした。PHP.iniファイルの設定が間違っていました。
mb_stringの値をいじったら、問題なく表示されました。

ありがとうございました。

ページ: 1

日本PHPユーザ会 掲示板 » PHP事はじめ » assignが未定義エラーについて

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています