A brief discussion on the definition and usage of PHP eval() function

高洛峰
Release: 2023-03-04 12:42:02
Original
1847 people have browsed it

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

语法

eval(phpcode)
Copy after login

浅谈PHP eval()函数定义和用法

提示和注释

注释:返回语句会立即终止对字符串的计算。

注释:该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。

例子

<?php
$string = "beautiful";
$time = "winter";
  
$str = &#39;This is a $string $time morning!&#39;;
echo $str. "<br />";
  
eval("\$str = \"$str\";");
echo $str;
?>  
Copy after login

 

输出:

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.&#39;database/DB_active_rec.php&#39;);
  
 if ( ! class_exists(&#39;CI_DB&#39;))
 {
  eval(&#39;class CI_DB extends CI_DB_active_record { }&#39;);
 }
 }
 else
 {
 if ( ! class_exists(&#39;CI_DB&#39;))
 {
  eval(&#39;class CI_DB extends CI_DB_driver { }&#39;);
 }
 }
  
 require_once(BASEPATH.&#39;database/drivers/&#39;.$params[&#39;dbdriver&#39;].&#39;/&#39;.$params[&#39;dbdriver&#39;].&#39;_driver.php&#39;);
  
 // Instantiate the DB adapter
 $driver = &#39;CI_DB_&#39;.$params[&#39;dbdriver&#39;].&#39;_driver&#39;;
 $DB = new $driver($params);
Copy after login

   

以上这篇浅谈PHP eval()函数定义和用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。

更多浅谈PHP eval()函数定义和用法相关文章请关注PHP中文网!  


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!