定義和用法 eval() 函數把字元串按照 PHP 代碼來計算。 該字元串必須是合法的 PHP 代碼,且必須以分號結尾。 如果沒有在代碼字元串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。 語法 ? eval(phpcode) 參數描述 ...
定義和用法
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 );
|