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


Posted in PHP onJune 21, 2016

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);

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

PHP 相关文章推荐
PHP版自动生成文章摘要
Jul 23 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
php文件管理基本功能简单操作
Jan 16 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 #PHP
Docker 如何布置PHP开发环境
Jun 21 #PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 #PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 #PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 #PHP
php中的登陆login实例代码
Jun 20 #PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 #PHP
You might like
15种PHP Encoder的比较
2007/03/06 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
Python装饰器基础详解
2016/03/09 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
使用python模拟高斯分布例子
2019/12/09 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python内置函数locals和globals对比
2020/04/28 Python
四年大学自我鉴定
2014/02/17 职场文书
活动策划求职信模板
2014/04/21 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
保险内勤岗位职责
2015/04/13 职场文书
房产电话营销开场白
2015/05/29 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android