eval() 函數把字符串按照 PHP 代碼來計算。
該字符串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字符串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
eval
(phpcode)
注釋:返回語句會立即終止對字符串的計算。
注釋:該函數對於在數據庫文本字段中供日後計算而進行的代碼存儲很有用。
<?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
);