ホームページ  >  記事  >  バックエンド開発  >  SmartyでPHPクラスの定数メンバーを呼び出す方法

SmartyでPHPクラスの定数メンバーを呼び出す方法

WBOY
WBOYオリジナル
2016-06-13 13:14:28894ブラウズ

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>ディスカッション
引用:

my_class::PWD を試してください

うまくいかない場合は、ここを見てください
http:// www.smarty.net/docs/ en/advanced.features.static.classes.tpl


あなたがくれたリンクを見ました
リンクは静的クラスについて説明しています

そして私の問題は静的クラスメンバーに関するものです。 。 。
とにかくご回答いただきありがとうございます。 。 。


------解決策----------------------
これはそれほど無理な要求でしょうか?開発時には柔軟に対応する
------解決策------------------
まだこの問題で悩んでいませんか?
{$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}

------解決策----------------------
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。