Smarty_PHP チュートリアルで PHP 組み込み関数を呼び出す方法
Smarty テンプレートで PHP の組み込み関数を呼び出すことができることをまだ知らない人も多いと思います。その使い方を見てみましょう。
テンプレートの記述:
{'param1'|functionName:'param2':'param3'}
php関数プロトタイプ:
echo functionName('param1','param2','param3');
例:
{'1234567'|substr:'1':'2'}
以下は関数のパラメータの順序に関係しています
{'a'|str_replace:'A':'abcd'}
PHPで関数呼び出しを直接記述するために直接拡張されており、関数を登録する必要はありません修飾子 .
より深い調査: 配列が間違っている可能性があることが判明しました。
Smarty の区切り文字が「{」と「}」であると仮定して、配列配列を Smarty に代入します。
Smarty で配列の長さを必要とする場合、配列の後に |count を追加するメソッド呼び出しを使用できることを多くの資料で見てきました。つまり、{array|count} を通じて配列の長さを取得します。しかし、今日テンプレートを書いていたときに、配列の長さを取得できず、返されるのは文字列配列だけであることがわかりました。つまり、{array} の結果のみが返され、配列の長さは返されません。
smartyplugins フォルダーを確認すると、count に関連するメソッドが存在しないことがわかります。つまり、count は php のメソッドを直接呼び出しています。
その後、インターネット上の情報から、count の前に @ を追加すると、配列の長さを正しく取得できることがわかりました。さらにSmartyのソースコードを確認すると、Smartyは属性調整器以降のメソッド名を処理する際に、先頭に@が付いたメソッド名に対して特別な処理を行うことが分かりました。そこで、Smartyの属性調整部でphpで定義した関数を呼び出す場合は@を付けることで表現できると判断します。
1. 配列型のメソッドをテストしたところ、@記号を付けないとエラーになることが分かりました。たとえば、配列で count メソッドを呼び出して配列の長さを調べるには、次のように {array|@count} を呼び出します。また、配列で end メソッドを呼び出して、配列内の最後のデータ セットを取得します。配列の場合は、{array|@ end} を呼び出すことができます。
2. 文字列関連の関数をテストした結果、@ の有無にかかわらず通常どおり呼び出せることがわかりました。
3. その他は慎重にテストされていません。
Smarty の本来の目的はコードとテンプレートを分離することであり、本来の設計意図から逸脱しないため、smarty で複雑な PHP 関数を呼び出すことはお勧めできません。
テンプレートの記述:
{'param1'|functionName:'param2':'param3'}
php関数プロトタイプ:
echo functionName('param1','param2','param3');
インスタンス:
{ '1234567'|substr:'1':'2'}
以下の奇妙な点は、関数のパラメータの順序に関連しています
{'a'|str_replace:'A':'abcd'}
Smarty はカスタム関数
カスタム関数を呼び出すには、 register_function() を使用して登録する必要があります。 ここでは、一般的な文字列の切り取りの例を示します。
関数は次のとおりです
extract($params);
$len=strlen($ text);
$max= $length;
for ($i=0;$i<$length;$i++){
文字は中国語です
$length++; if($len>$max)$str. ...";
$str;
} を返す
関数を登録する
$smarty->register_function('len',"SmartyLen");
テンプレート呼び出し
{len text="under test" length="1"} //ここでの text と length は実際には関数内の 2 つのパラメーターであることに注意してください。関数のパラメーターは、関数の内部変数名と一致している必要があります。実際、関数で渡されるパラメータは配列です。配列内の変数を現在のシンボル テーブルにインポートするには、関数内で extract($params); を使用します。
http://www.bkjia.com/PHPjc/326639.html
www.bkjia.com
true
技術記事

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
