現在開發網站時用到了smarty架構模板,感覺非常好用,較好實現了php源碼和html代碼的分離。現在分享smarty的一些常用變數。
1、SMARTY_DIR Smarty目錄
定位Smarty類檔案的完整系統路徑,如果沒有定義Smarty目錄,Smarty將會試著自動建立合適的值。如果定義了,路徑必須要以斜線結束。
define(“SMARTY_DIR”,”/usr/local/lib/php/Smarty/”);
require_once(SMARTY_DIR.”Smarty.class.php”);
2、$template_dir 模板目錄變數
該變數定義預設範本目錄的名字。當包含檔案時,如果不提供一個源類型(即源地址),那麼將會到模板目錄中尋找。預設情況下,目錄是:“./templates”,也就是說他將會在和php執行指令碼相同的目錄下尋找模板目錄。
3、$compile_dir 編譯目錄變數
該變數定位編譯模板的目錄名字。預設情況下,目錄是:“./templates_c”,也就是說他將會在和php執行指令碼相同的目錄下尋找編譯目錄。
4、$config_dir 配置目錄變數
該變數定義用於存放模板設定檔的目錄,預設情況下,目錄是:“./configs”,也就是說他將會在和php執行指令碼相同的目錄下尋找配置目錄。
5、$plugins_dir 外掛程式目錄變數
該變數定義Smarty尋找所需外掛程式的目錄。預設是在SMARTY目錄下的“plugins”目錄。如果提供了一個相對路徑,Smarty將首先在SMARTY目錄下尋找,然後到當前工作目錄下尋找,繼而到php包含路徑中的每個路徑中尋找。
6、$debugging 調試變數
它能啟動偵錯主控台。該控制台是一個javascript視窗,該視窗告訴你被包含的模板和應用於當前模板頁面的變數。
7、$debug_tpl 調試模板
該變數定義用於偵錯主控台的模板檔案名稱字。預設情況下,其名字為:debug.tpl,位於Smarty目錄中。
8、$debugging_ctrl 調試控制變數
該變數作用是允許以交替的方式啟動調試設定。NONE表示不允許交替方式。URL表示當關鍵詞SMARTY_DEBUG出現在QUERY_STRING(查詢字串)中時,針對此指令碼的調用,調試被啟動。如果$debugging變數是真,則忽略其調試控制變數值。
9、$global_assign全域組態變數
定義一組總是隱式地作用於模板引擎的變數列表。這對於使全域變數或伺服器變數可用於所有模板是很方便的,因為無需手工配置它們。在全域配置中的每一元素應 當要麼是一全域變數的名字,要麼是一鍵/值對(鍵是全域數組名,值是對應該全域數組的變數數組)。$SCRIPT_NAME變數預設屬於$HTTP_SERVER_VARS數組。
10、$undefined未定義變數
該變數為Smarty設定沒有得到定義的變數的值,預設為空白.當前僅用來設定全域配置中的未定義變數為一個預設值.
11、$autoload_filters自動載入過濾器變數
如果你希望在每次模板調用過程中載入過濾器,你可以指定他們使用此變數,Smarty將自動為你載入它們.該變數是一個聯合數組,在數組中鍵是過濾器類型,值是過濾器名字所組成的數組.例如:
$smarty->autoload_filters = array(‘pre’ => array(‘trim’, ‘stamp’),
‘output’ => array(‘convert’));
12、$compile_check編譯檢查變數
每次調用PHP應用程式,Smarty 會試著查看自上次編譯時間以來,當前模板是否被修改過.如果修改過了,她會重新編譯那個模板.如果模板還沒有被編譯過,她將編譯模板而不管編譯檢查如何設 置.預設情況下編譯檢查這個變數設定為true.一旦一個應用程式投入產品中(模板將不會修改了),就不再需要編譯檢查這一步了.為了最大效能,確定 將$compile_check設為”false”.注意:如果設為了”false”,雖然模板檔案被修改,但你不會看到修改結果,因為模板沒有得到重新 編譯.如果啟動了緩衝和編譯檢查,一旦有關模板檔案或設定檔被更新,快取檔案將會重建.
13、$force_compile強迫編譯變數
強迫Smarty每次調用(重新)編譯模板時.這項設定不受$compile_check的限制.預設情況下,它是無效的.它對於開發和調試很方便.但它決不能使用於產品環境下.如果啟動了緩衝,每次將會重建快取檔案.
14、$caching緩衝變數
告訴Smarty是否緩衝模板的輸出.預設情況下,她設為0,或無效.如果模板產生冗餘內容,建議開啟緩衝.這樣有利於獲得良好的效能增益.你也可以為同一模板設有多個緩衝.當值為1或2時啟動緩衝.1告訴Smarty 使用當前的$cache_lifetime變數判斷緩衝是否到期.2告訴 Smarty 使用產生緩衝時的cache_lifetime值.用這種方式你正好可以在擷取模板之前設定緩衝存留時間,以便較精確地控制緩衝何時失效.
如果啟動了編譯檢查,一旦任何的模板檔案或設定檔(有關緩衝部分的設定檔)被修改,緩衝的內容將會重建.如果啟動了強迫編譯,緩衝的內容將總會重建.
php-smarty一些常用變數第二篇。
15、$cache_dir緩衝目錄變數
這是存放模板緩衝的目錄名.預設情況下,它是:”./cache”,也就是說你可以在和php執行指令碼相同目錄下尋找緩衝目錄.你也可以用你自己的自訂緩衝處理函數來控制快取檔案,它將會忽略這項設定.
16、$cache_lifetime緩衝存留時間變數
該變數定義模板緩衝有效時間段的長度(單位秒),一旦這個時間失效,則緩衝將會重建.如果要想實現所有效果,$caching必須 因$cache_lifetime需要而設為”true”.值為-1時,將強迫緩衝永不到期.0值將導致緩衝總是重建(僅有利於測試,一個更有效使 快取無效判定的方法是設定$caching = false.)
如果啟動了強迫編譯,則快取檔案每次將會重建.要想有效地停止緩衝,你可以利用clear_all_cache() 函數清除所有的快取檔案,或者利用clear_cache() 函數清除個別檔案(或檔案組).
17、$cache_handler_func緩衝處理函數變數
你可以提供一個自訂函數來處理快取檔案,而不是通過變數$cache_dir使用內建方法.祥見:cache handler function section
18、$cache_modified_check緩衝修改檢查變數
如果設定該變數為真,Smarty將分析用戶端發送來的If-Modified-Since頭資訊.如果快取檔案時間戳記自上次訪問以來沒有改變,則發送一個”304 Not Modified”頭,而不是快取檔案內容.這種方式僅工作於沒有 {insert} 標記的緩衝內容.
19、$config_overwrite配置覆蓋變數
如果設該變數為真,則從設定檔中讀取出來的變數將會互相覆蓋.否則,變數將會放到一個數組中.如果你想把設定檔中的資料存放區到數組裡,這種方式是很有用的,僅僅列出每個元素多次就可以了.預設情況下,設為真.
20、$config_booleanize配置布爾化變數
如果該變數設為真,設定檔中的on/true/yes 和 off/false/no值會自動轉化為布爾值.這樣的話,你就可以在模板中像{if #foobar#}pp815 {/if}這樣使用這些值了.如果foobar為on, true 或 yes,那麼 {if}語句就會執行了.預設情況下,該變數值為真.
21、$config_read_hidden配置讀取隱藏變數
如果設為真,在設定檔中的隱藏節塊(******不會翻譯啦)可以從模版中讀取出來.典型的你會設為假,這樣你可以在設定檔裡存放敏感性資料,例如資料庫參數,而不用擔心模版會調用他們.預設情況下,該變數設為假.
22、$config_fix_newlines配置固定分行符號變數
如果該變數設為真,那麼在設定檔中的mac 和 dos 分行符號(r and rn)在文法解析時將會轉換為n. 預設情況下,該變數為真.
23、$default_template_handler_func預設範本處理函數變數
該函數在模板不能從它的來源目錄下擷取時會得到調用.
24、$php_handling php處理變數
該變數告訴Smarty怎樣處理嵌入到模版中的php代碼.有四種可能的設定,預設為SMARTY_PHP_PASSTHRU.注意:改變數的設定不會影響模板裡面{php}{/php}標記中的php代碼.
原樣輸出標記.
作為html實體引用標記
從模板中移出標記.
將作為php代碼執行標記.
極度不贊成將php代碼嵌入到模板中.
25、$security安全變數
安全變數要麼是真,要麼是假.預設為假.當你不信任模板中的可編輯部分(例如通過ftp方式上傳編輯的), 並想通過範本語言減小系統非安全的風險時,安全變數設為真比較適合.設為真會將下面的規則強加於範本語言中,除非特別地 用$security_settings覆蓋.
如果變數$php_handling設為了SMARTY_PHP_ALLOW,則會隱式地被修改成SMARTY_PHP_PASSTHRU
PHP函數在IF語句中是不允許的,除了在$security_settings中另行指出.
模板僅可以包含於$secure_dir數組列出的目錄中.
本地檔案僅可以用{fetch}擷取於$secure_dir數組列出的目錄中.
{php}{/php} tags are not allowed
不允許有{php}{/php}標記.
PHP函數不允許作為修正器,除了在$security_settings中指出.
php smarty開發中常用到的一些常用變數(三),smarty程式員應該知道的變數。
26、$secure_dir安全目錄變數
這是一個與安全有關的本地目錄陣列變數.當啟動安全變數時{include} 和 {fetch}會用到此陣列變數.
27、$security_settings安全組態變數
These are used to override or specify the security settings when security is enabled. These are the possible settings:
用於當啟動安全變數時覆蓋或另行指定安全配置.有以下幾種可能的配置:
PHP_HANDLING – 真或假.如果真,則不檢查$php_handling的配置.
IF_FUNCS – 這是一個可允許包含在if語句中的php函數名數組.
INCLUDE_ANY – 真或假.如果真,可以從檔案系統中包含任何模板,而不管$secure_dir目錄設定如何.
PHP_TAGS – 真或假.如果真,{php}{/php}允許在模板中存在.
MODIFIER_FUNCS – 這是一個可用作修正器的php函數名數組.
28、$trusted_dir信任目錄變數
信任目錄變數僅用在$security啟動之後.這是一個所有建立信任的目錄陣列變數.你可以將php指令碼放到這些信任目錄中,這些指令碼會直接在模板裡以{include_php}標記得到執行.
29、$left_delimiter左結束符變數
用於範本語言中,預設是”{“.
30、$right_delimiter右結束符變數
用於範本語言中,預設是”}”.
31、$compiler_class編譯類變數
指定Smarty用來編譯模板的編譯類名.預設為:’Smarty_Compiler’.僅適合於進階使用者.
32、$request_vars_order變數順序變數
請求變數的順序在這裡配置,類似於php.ini中的變數順序.
33、$request_use_auto_globals自動全域變數
指定Smarty是否使用php的$HTTP_*_VARS[]陣列變數(預設$request_use_auto_globals=false) 或$_*[]數組($request_use_auto_globals=true)變數.這對使用了{$smarty.request.*}, {$smarty.get.*}等標記的模板有影響.值得注意的是:如果設定$request_use_auto_globals為真,variable.request.vars.order就無效了但php的gpc_order配置值還有作用.
34、$compile_id編譯id變數
永久的編譯鑒別號.作為一個可選辦法將相同的編譯號傳遞給每個函數調用,你可以設定這個編譯id,隨後此id將會被隱含地使用.
35、$use_sub_dirs子目錄變數
如果你的php環境不允許Smarty建立子目錄,則設此變數為假.子目錄非常有用,所以儘可能的使用他們.
36、$default_modifiers預設修正器變數
這是一個修正器陣列變數,這些修正器隱式地作用於模板中的每個變數.例如:針對HTML,用數組(‘escape:”htmlall”‘)預設地忽略每個 變數;為了使一個變數免除於預設修正器,請將參數為”nodefaults”的特殊”smarty”修正器作用於它,例如: {$var|smarty:nodefaults}.
37、$default_resource_type預設源類型變數
該變數告訴smarty隱式地使用什麼源類型.預設值為’file’,也就是說,$smarty->display(‘pp815/index.tpl’);和and $smarty->display(‘file:index.tpl’);從意思上是一樣的.