eval定義和用法
eval() 函數把字串按照 PHP 代碼來計算。
該字串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
文法
eval(phpcode)
參數 描述
phpcode 必需。規定要計算的 PHP 代碼。
提示和注釋
注釋:返回語句會立即終止對字串的計算。
注釋:該函數對於在資料庫文字欄位中供日後計算而進行的代碼儲存很有用。
例子
複製代碼 代碼如下:
<?php
$string = "beautiful";
$time = "winter";
$str = 'This is a $string $time morning!';
echo $str. "<br />";
eval("$str = "$str";");
echo $str;
?>
輸出:
代碼如下複製代碼 This is a $string $time morning!
This is a beautiful winter morning!
eval() 函數在CodeIgniter架構裡也有用到。在 /system/database/DB.php 檔案中,根據系統的配置動態定義了一個類 CI_DB,具體程式碼片段如下:?
複製代碼 代碼如下:
if ( ! isset($active_record) OR $active_record == TRUE)
{
require_once(BASEPATH.'database/DB_active_rec.php');
if ( ! class_exists('CI_DB'))
{
eval('class CI_DB extends CI_DB_active_record { }');
}
}
else
{
if ( ! class_exists('CI_DB'))
{
eval('class CI_DB extends CI_DB_driver { }');
}
}
require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php');
// Instantiate the DB adapter
$driver = 'CI_DB_'.$params['dbdriver'].'_driver';
$DB = new $driver($params);
本函式可將字串之中的變數值代入,通常用在處理資料庫的資料上。參數 code_str 為欲處理的字串。值得注意的是待處理的字串要符合 PHP 的字串格式,同時在結尾處要有分號。使用本函式處理後的字串會沿續到 PHP 程式結束。