Php Ctemplate 関連コンテンツ

WBOY
WBOYオリジナル
2016-06-23 14:32:431018ブラウズ

会社のニーズにより、今後のプロジェクトは Php Ctemplate エンジンを使用して開発されます。ここでは、今月学んだことと私自身の理解を書き留めます。間違いや不正確な記述がありましたら、ご批判、ご指摘いただければ幸いです。

1. はじめに

この用語を見ても、前半だけがプログラミング言語であることを理解しているかもしれません。関係ないので、PHP 言語をベースにしたこのタグ テンプレート エンジンを紹介しましょう (私の翻訳は正確ではないかもしれませんが、この Web 開発ソリューションを次のように翻訳することをお許しください)。

彼の経歴について簡単に話しましょう。 Php Ctemplate を理解するには、まず Ctempalte について知る必要があります。Ctempalte の正式名は Google Cte​​mplate です。これは、C++ 言語を使用した、シンプルですが非常に効率的な Web テンプレート エンジンです。コードの一部を見てみましょう。(公式デモから) どのように使用されているかすぐにわかります。

出力は次のようになります:

Hello John Smith

You Have Just Won (ここではランダムです) Random %100000 の乱数を実行しています) 0

まあ、(ここに Random%100000* 0.83 の乱数があります)、税引き後

、合計して C++ ソース コードに TPL オブジェクトをロードします (次のようになります)これをテンプレート template ) ファイルと呼び、TemplateDictionary に対応する値を入力して、最後に出力します。面倒に思えますよね。バックエンド タグの対応する値を tpl の {{tag}} に入力するだけです。詳細については、http://google-ctemplate.googleCode.com/svn/trunk/doc/index.html を参照してください

では、PHP CTEMPlate についてはどうでしょうか? PHP 拡張機能については誰もが知っています。PHP を使ったことのある友人は、gd、exif、mysql、mysqli 拡張機能について知っています。はい、これは php.ini ファイルの「extension=」セクションにある dll です。私は、PHP ctemplate は PHP 拡張インターフェイスの形式を使用して Google Cte​​mplate をラップし、PHP が Google Cte​​mplate の機能を備えていると結論付けました。より一般的には、これはコードに反映されます。tpl ファイルは変更されませんが、c++ ファイルは php ファイルに変更されます。使い方については、ここではあまり紹介しないと思いますが、Google Cte​​mpalteと同じです。

http://code.google.com/p/php-ctemplate/

を参照してください。

2. WIN32 でも可能ですか?

おそらく、このテンプレート エンジンが一般的な MVC と一致していることがすぐにわかるでしょう。はい、それだけです。しかし、残念ながら、PHP Ctemplate は、Win32 環境の PHP でのみ実行できます。インターネット上で、対応する PHP ctemplate dll が見つかりませんでした。また、PHP ctemplate の作者にも相談しましたが、彼はそれに乗り気ではないようです。これらのコードを win32 環境でコンパイルします。私は C++ を開発している友人の「A-Dai」とコンパイルを試みましたが、php ソース コード + Ctemplate ソース コード + PHP ctemplate ソース コードを見つけて、Win32 で PHP ctemplate 拡張機能をコンパイルしました。 , しかし、PHP がロードを開始するたびに奇妙です PHP ctemplate を使用すると、php エンジンで例外が発生し、PHP ctemplate を正常にロードできなくなります。

php ctemplate が正常にロードされると、phpinfo に表示されます:

PHP ctemplate のソースコードも調べてみましたが、Zend に基づいて書かれているようです。私は C++ と PHP にあまり習熟しておらず、この一連の拡張機能を書き直す能力も実際にはありません。そのため、妥協策として考えられるのは、Ctemplate を ATL COM でラップし、PHP ctemplate の関数とメソッドをシミュレートすることだけです。

3. 私の試み

こんなに曲がりくねった理由は、このフレームワークを使用した後、PHP コードをデバッグする方法がないためです。freebsd 環境に xdebug をインストールしてみましたが、リモート デバッグはかろうじて実行できます。ただし、freebsd にはグラフィカル インターフェイスがないため、gnome をインストールするしかありませんでした。これは一時的にしかできません。好奇心と不満から、PHP ctemplate の関数とメソッドをシミュレートするために Ctemplate を ATL COM でラップしましたが、まだ半分しか完成していません。同志 "Dumb" に特別な感謝を表したいと思います。彼なしでは、私は C++ ATL をまったく書くことができなかったでしょう。以下は ATL COM でのメソッドです (一部のみ完成しています)。

パッケージ化した ATL COM 関数 core.php にパッケージ化しました。

ご興味がございましたら、改善を続けるためにソース コードをリクエストしてください。COM なので ASP も使用でき、ダウンロード用の DLL を提供します。エビが win32 で PHP ctemplate を正常にコンパイルして使用できるのであれば、私はそれをさらに嬉しく思います。

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