Smarty が php クラスの定数メンバーを呼び出す方法
php content:
require("libs/Smarty.class.php");
class my_class
{
const PWD = "gogo";
var $username = "深宇宙";
}
$class_obj = new my_class;
echo $class_obj->username.'
';
echo $class_obj::PWD.'
';
$smarty->assign('class_obj', $class_obj);
$smarty->display('eg_4_2.tpl' ) ;
?>
tpl content:
{$class_obj->username}
{$class_obj: : PWD}
$class_obj->username
の場合、php と tpl の両方で正常に動作します。 。 。
$class_obj::PWD の場合
php で使用すると正常に動作します
tpl で使用するとエラーが報告されます
詳しい指導をお願いします。ありがとうございます!
-----解決策--------------------------------Smarty のルールに従う必要があります。そうでない場合は、Smarty から追放されます。
------解決策---------http://wenku.baidu.com/ view /c2aa98ef551810a6f52486af.html
------解決策------------------my_class::PWD を試してください
まだ動作しない場合は、こちらをご覧ください
http://www.smarty.net/docs/en/advanced.features.static.classes.tpl
------解決策---------クラス名を渡します。 $smarty->assign('my_class', my_class);
tpl call:
{php}
echo my_class::PWD;
{/php}
PHP 5.3.0 以降$class_obj::PWD で呼び出すことができます。以前のバージョンではこれは不可能でした。 php のバージョンがわかりません。
------解決策------------------まだ苦労しています、私の方法に従ってください。試してみましたか? どこが機能しないのでしょうか?
------解決策---------何に悩んでいるのかわかりません:
PHP コード
<?php
クラスC{
const AAA = "これは const<br>";
}
$obj = 新しい C();
$a = C::AAA;
$smarty->assign("A",$a);
$smarty->assign("str1",$str1);
$smarty->assign("str2",$str2);
$smarty->display("test.html");
?>
<br /><font color='#e78608'>-----解決策---------</font><br />わかりました。しかし、私にできることは何もありません。
<br /><font color='#e78608'>------解決策----------------------</font><br /> $smarty->assign("str1" , $str1);<br> $smarty->assign("str2",$str2);<br> はテストデータです。役に立たないので削除してください
<br><font color="#e78608">------解決策------------------</font><br>お客様のニーズを理解すれば、smarty が解決できる可能性は非常に高いです。 <br> に関してはまだ要望が届いていないため、この機能は作成していません。Web サイトにアクセスしてこのリクエストを送信するか、独自のプラグインを作成してください<br><br><br>ディスカッション
ログイン後にコピー
------解決策----------------------
これはそれほど無理な要求でしょうか?開発時には柔軟に対応する
------解決策------------------
まだこの問題で悩んでいませんか?
{$class_obj::PWD}
は
tpl_vars['class_obj']->value::PWD に変換されます。 ?>
while
$class_obj = new my_class;
echo $class_obj->username.'
';
echo $ class_obj ::PWD.'
';
正しい結果を得ることができます (ただし厳密ではありません)
しかし、これはどうでしょうか?
$class_obj->x = new my_class;
echo $class_obj->x->username.'
' //ここにディープスペースを出力できます
echo $class_obj- > ;x::PWD.'
';//ここでエラーが報告されます:
解析エラー: 構文エラー、予期しない T_PAAMAYIM_NEKUDOTAYIM、
に ',' または ';' が必要です
------解決策----------------------
マニュアルを確認したところ、次のように変数のみを渡すことができますこの方法では値、定数を渡すことはできません。 ! これのみ:
php:$PWD=$class_obj::PWD; $smarty->assign("PWD",$PWD);
tpl:{$PWD}
------解決策----------------------