Mohamed Nabil(https://github.com/phpmohamednabil/)!
[スタイル]は、小型プロジェクトや教育目的で使用できる軽量のPHPテンプレートエンジンです。
シンプルで柔軟な使用法と小さなコードで、コード内の大きなライブラリのテンプレートエンジンのパワーを感じます。
Composer https://github.com/composer/composerをインストールします
アプリケーションフォルダー内にcomposer.jsonを作成します。
composer require php-mohamed-nabil/style
ビューファイルが配置されているフォルダーとキャッシュフォルダーを渡して、スタイルインスタンスを作成します。レンダリングメソッドを呼び出すことにより、テンプレートをレンダリングします。
use Style Style ;
$ style = new Style ( ' template/ ' , ' template/temp/ ' );
$ style -> render ( ' page_sections ' ,[]);addTempRole()関数を使用してカスタム式を追加することもできます。
$ style -> addTempRole ( ' test ' , ' ~ob ' , function ( $ capt ){
return $ capt [ 0 ]. ' ppppppppppppppppppoboobobo ' ;
});
$ style -> render ( ' page_sections ' ,[]);これにより、テンプレートで以下を使用できます。
here the ppppppppp : ~ob
拡張ビューを使用して@spread(parent_view_name)を使用することもできます
@spread('layout')@sections @addsectionも使用して、子から親のビューにデータを送信する
<!DOCTYPE html >
< html >
< head >
< meta charset =" utf-8 " >
< meta name =" viewport " content =" width=device-width, initial-scale=1 " >
< title > layout page </ title >
</ head >
< body >
< p class =" yield " >
<!-- this will yield data and print it here form child view -->
@addsection('content')
</ p >
</ html > @spread('layout')
<!-- add data to the main view and render show it -->
@section('content')
My first paragraph in parent view
@endsectionコンパイルされてハードコードされた例であるため、あるビューから別のビューにデータを送信できるようになりました。
@hardcompile(test[] within h1:title data:"echo mt_rand(1,1000)")test.stl.phpの結果
<!DOCTYPE html >
< html >
< head >
< meta charset =" utf-8 " >
< meta name =" viewport " content =" width=device-width, initial-scale=1 " >
< title > Test </ title >
</ head >
< body >
< h1 class =" title " >
681 <!-- this a random number hardcoded by main view -->
</ h1 >
このような他のビューにデータを送信できます。
@hardcompile(test['name'= > $name,$title] before h1:title data:"echo mt_rand(1,1000)")ビューページに含まれる他のビューを取得します
@display('main',['data'= > $data])天体で
< div class ="" >
@foreach($users as $user)
{$user- > username}
@endforeach
</ div > これで、入力データを使用してフォームを作成できるようになりました
[php]
print Style Style:: form ( ' / ' ,[
' method ' => ' post ' ,
' enctype ' => ' multipart/form-data ' ,
' id ' => ' first-form '
])-> formInput ( ' username ' ,[ ' class ' => ' form-control ' , ' type ' => ' text ' ])-> formInput ( ' password ' ,[ ' class ' => ' form-control ' , ' type ' => ' password ' ])-> formInput ( ' file ' ,[ ' class ' => ' form-input-file ' , ' type ' => ' file ' ])-> renderForm ();
[/php]出力されます:
< form action =" / " method =" post " enctype =" multipart/form-data " id =" first-form " >
< input name =" username " class =" form-control " type =" text " >
< input name =" password " class =" form-control " type =" password " >
< input name =" file " class =" form-input-file " type =" file " >
</ form >{$var_name}Dieのようにビューの@backwithfalseを使用できます。これは、falseを返すように変換され、実行されない後にコードまたはHTMLをコードから終了するだけです
エンティティを停止せずに、HTMLコードを印刷して、投稿コンテンツを表示したい場合、またはHTMLコードのブロックが表示され、ブラウザの影響を受けている場合、その主な理由を印刷できます。
< div class =" blog-post-content " >
{@$posts- > post_content@}
</ div > | 表現 | 説明 |
|---|---|
{$var} | XSSに対して逃げて可変VARを印刷するため |
{%$var%} | varまたは任意の文字列を逃げたりフィルタリングしたりします |
{@$var@} | 逃げたりフィルタリングせずにvarまたは任意の文字列を印刷する |
{%var='name'} | ビュー内の変数を定義します: $ var = 'name' |
{%func echo ucfirst($var)%} | 関数を実行するかエコーエコーワードは、関数をエコーしたい場合にオプションです |
[comment]ww [/comment] | その間のものは補われません |
[php] var_dump($arr); [/php] | PHPコードを記述します |
{%if $var>0%} | statmentの場合を定義します |
{%else%},{%elseif%} and {%endif%} | elseを定義します。 |
@addsection($name) | レイアウトまたは親ビューで使用して、後で子どもビューで印刷されるセクションコンテンツを実装する |
@spread($name) | 子ビューで親ビューを拡張します |
@section($name) | チャイルドビューでセクションを開始します |
@endsection($name) | チャイルドビューのセクションを終了します |
@foeach | ループごとに開始します |
@endforeach | ループごとに終了します |
@for() | forループを開始します |
@endfor | forループを終了します |
@while() | statmentを開始します |
@endwhile | statmentを終了します |
@switch($var) | スイッチ統計を開始します |
@case($name) | スイッチ統計内のケース条件 |
@break | 統計またはループを壊します |
@continue | 統計またはループを続けます |
@default | スイッチ統計内のデフォルトの条件 |
@backwithfalse | falseを返すように変換され、コードが実行されない後にコードまたはHTMLを終了します |
@hardcompile(view_name[] before|after|within tagname:classname data:"php_code_here") | 他のview_nameをハードコンパイルし、クラス名を持っているtagnameの前または後または内部でデータコンテンツを注入します。 |
MITライセンスの下で公開されています。