使用var_export()函數可以在服務端程序沒有在打印的情況下,配合file_put_contents方便的調試程序,查看變量和數組的內容。
在開發過程中,我們常用var_dump()來打印數組內容,但有時候我們不方便通過瀏覽器查看調試信息,這時候可以將信息輸出到文件中查看,var_export()可以打印或返回變量的字符串表示,返回值是一個字符串,形式類似var_dump()打印的字符串,使用var_export()可以將POST、GET和SESSION等數據寫入文件,方便查看。
下面是php文檔中的描述:
| mixed var_export ( mixed $expression [, bool $return ] ) |
| 此函數返回關於傳遞給該函數的變量的結構信息,它和 var_dump() 類似,不同的是其返回的表示是合法的 PHP 代碼。 您可以通過將函數的第二個參數設置為 |
簡而言之,第二個參數為TRUE時,有返回值,不打印;為FALSE時,打印變量,默認為FALSE
下面的示例使用var_export()將變量轉換成字符串后輸出:
<?php $num = 255; $str = 'abc def'; $bool = true; $arr = array('value1', 'value2', 1, 'key1'=>'value3', 'key2'=>array(2, 3)); echo var_export($num, TRUE); echo "\n"; echo var_export($str, TRUE); echo "\n"; echo var_export($bool, TRUE); echo "\n"; echo var_export($arr, TRUE); echo "\n"; /*輸出 255 'abc def' true array ( 0 => 'value1', 1 => 'value2', 2 => 1, 'key1' => 'value3', 'key2' => array ( 0 => 2, 1 => 3, ), )
var_export()返回的是合法的php代碼,非常方便生成配置文件或緩存文件,下面用簡單的緩存文件示例來講一下:
<?php //$cache的值是更新緩存時從數據庫中取出來的 $cache = array( 'LOG_RECORD' => false, 'LOG_TYPE' => 'File', 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR', 'LOG_FILE_SIZE' => 2097152, 'LOG_EXCEPTION_RECORD' => false, ); //將從數據庫中讀到的數據寫入緩存文件 $content = "<?php\nreturn ".var_export($cache); //這里使用var_export() file_put_contents('./cache.php', $content);
我們的緩存文件cache.php內容如下:
<?php return array( 'LOG_RECORD' => false, 'LOG_TYPE' => 'File', 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR', 'LOG_FILE_SIZE' => 2097152, 'LOG_EXCEPTION_RECORD' => false, );
調用緩存文件的時候只需要使用require()即可將緩存文件的內容復制給一個變量:
<?php $cache = require('./cache.php');
緩存文件中的數組賦值給了$cache變量,phpcms的緩存文件就是采用這種方式的緩存。
