assert函数_PHP 之 assert()函数

assert()函数其实是一个断言函数。

那么什么是断言呢?百度百科上是这么说的:编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。说到这里,大家应该能知道assert()函数是干嘛用的了吧?好,接下来我们看一下PHP官方文档是怎么解释的:
assert — 检查一个断言是否为 FALSE

PHP 

assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。

如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。 assertion 是字符串的优势是当禁用断言时它的开销会更小,并且在断言失败时消息会包含 assertion 表达式。 这意味着如果你传入了 boolean 的条件作为 assertion,这个条件将不会显示为断言函数的参数;在调用你定义的 assert_options() 处理函数时,条件会转换为字符串,而布尔值 FALSE 会被转换成空字符串。

断言这个功能应该只被用来调试。 你应该用于完整性检查时测试条件是否始终应该为 TRUE,来指示某些程序错误,或者检查具体功能的存在(类似扩展函数或特定的系统限制和功能)。

断言不应该用于普通运行时操作,类似输入参数的检查。 作为一个经验法则,在断言禁用时你的代码也应该能够正确地运行。

assert() 的行为可以通过 assert_options() 来配置,或者手册页面上描述的 .ini 设置。

assert_options() ASSERT_CALLBACK 配置指令允许设置回调函数来处理失败的断言。

assert() 回调函数在构建自动测试套件的时候尤其有用,因为它们允许你简易地捕获传入断言的代码,并包含断言的位置信息。 当信息能够被其他方法捕获,使用断言可以让它更快更方便!

回调函数应该接受三个参数。 第一个参数包括了断言失败所在的文件。 第二个参数包含了断言失败所在的行号,第三个参数包含了失败的表达式(如有任意 — 字面值例如 1 或者 "two" 将不会传递到这个参数)。 PHP 5.4.8 及更高版本的用户也可以提供第四个可选参数,如果设置了,用于将 description 指定到 assert()。

相比于Python等其他语言来讲,PHP的assert()函数显得更加复杂。而在一般的开发中,当然,这是由于我没有写过单元测试,我是比较习惯于用if()else{}来进行布尔值判断,或者是使用var_dump来打印调试。所以基本很少使用assert()这个断言函数。尤其是因为既然它一般不推荐出现在生产模式下,那么开发完后的删除操作显得尤为重要,不经意的就耗费了很多时间。

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里链接 或者关注咱们下面的专栏
PHP大神进阶​zhuanlan.zhihu.com
33bf1ebdd196d3147655d8139e37a4c8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 同根动画_android 动画系列 (1) - tween 动画(view动画)

这是我这个系列的目录,有兴趣的可以看下: android 动画系列 - 目录tween 动画早些时候我们也叫补间动画(我也不知道为啥),现在也有叫 view 动画的。tween动画是2.X 时代的产物,因为效果不理想,4.X 时代推出了动画的升级版 属性动画…

1-3docker commit定制镜像

以定制⼀个 Web 服务器为例⼦1、commit定制镜像 docker pull nginx:1.17运行容器 --name:容器名字 -d:后台 -p本地端口:容器内端口 docker run --name webserver -d -p 8080:80 nginx:1.17#进入容器 docker exec -it webserver /bin/bash#进入容器执…

[html] HTML5中的article和section有什么区别?

[html] HTML5中的article和section有什么区别&#xff1f; <article> 标签定义外部的内容&#xff0c;比如来自 blog 的文本。其内容独立于文档的其余部分。<section> 标签定义文档中的节&#xff08;section、区段&#xff09;。比如章节、页眉、页脚或文档中的其…

mysql 启动_mysql安装、启动

在这个网址下载的&#xff1a;Download MySQL Community Server​dev.mysql.com下载后解压到了D盘&#xff0c;我是重命名为mysql。进去目录下bin子目录&#xff0c;进行以下操作&#xff0c;初始化&#xff1a;mysqld --initialize --console执行完成后&#xff0c;会输出 roo…

2010 Stanford Local ACM Programming Contest-H解题报告

题意是说&#xff0c;给出一些道路&#xff0c;要修建一条高速公路&#xff0c;高速公路不能分叉&#xff0c;而且是在给出的图中的一些路径组成&#xff0c;求的是不在高速公路上的点离高速公路的最远距离的最小值是多少。首先要找到一条这个图中的关键路径&#xff0c;既最长…

channelsftp的put_java实现sftp客户端上传文件以及文件夹的功能代码

1.依赖的jar文件 jsch-0.1.53.jar2.登录方式有密码登录,和密匙登录代码:主函数:import java.util.Properties;import com.cloudpower.util.Login;import com.util.LoadProperties;public class Ftp {public static void main(String[] args) {Properties properties LoadPrope…

qtmessagebox对话框里自定义按钮文本_按钮你可以这样设计

作者&#xff1a;Michal Malewicz译者&#xff1a;Matrix审稿&#xff1a;afang原文链接&#xff1a;https://uxdesign.cc/design-better-buttons-a5c90a113280文章由交译所成员翻译&#xff0c;如需转载&#xff0c;请先申请授权。译文如下&#xff1a;按钮是触发它所描述功能…

zabbix入门之添加主机

添加主机的方法有两种&#xff1a;手动添加、自动发现 前提是&#xff1a;在被监控主机中安装zabbix-agent、zabbix-sender组件&#xff0c;并配置好启动服务。 手动添加&#xff1a; 自动发现&#xff1a; 这里等待1分钟左右即可发现主机 开启默认的动作 等待几分钟后即可在“…

程序5

【程序5】 题目&#xff1a;利用条件运算符的嵌套来完成此题&#xff1a;学习成绩>90分的同学用A表示&#xff0c;60-89分之间的用B表示&#xff0c;60分以下的用C表示。 1.程序分析&#xff1a;(a>b)?a:b这是条件运算符的基本例子。方法一&#xff1a;    function…

[html] 页面上的登录表单记住了密码(显示星号),但我又忘了密码,如何找回这个密码呢?

[html] 页面上的登录表单记住了密码&#xff08;显示星号&#xff09;&#xff0c;但我又忘了密码&#xff0c;如何找回这个密码呢&#xff1f; 将密码input的type改为text或者为空&#xff0c;则会显示输入框值。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识…

如何保持连接_工高连城 | 连接器连接失效的原因有哪些

【温馨提示】本公众号是工高电子旗下工高连城中国连城双电商平台的官方公众号&#xff0c;简称工高连城连接器商城 中国连城平台定位&#xff1a;中国连接器行业专业供应链服务平台中国连接器行业的阿里巴巴永不落幕的online线上慕尼黑连接器展会。中国连城官网&#xff1a;w…

centos7删除文件命令_干货 | 玩转云文件存储——利用CFS实现web应用的共享访问...

京东云文件服务(Cloud File Service,以下简称&#xff1a;CFS)是一种高可靠、可扩展、可共享访问的全托管分布式文件系统。它可在不中断应用服务的情况下&#xff0c;根据您对文件系统的使用&#xff0c;按需扩展或缩减&#xff0c;并按照实际用量计费。采用NFS协议&#xff0c…

1-4dockerfile基本使用

1.创建一个文件夹 mkdir mynginxcd mynginxtouch Dockerfile [rootVM_0_10_centos mynginx]# cat Dockerfile FROM nginx:1.17 #第一次镜像RUN echo echo <h1>Hello, zjy!</h1> > /usr/share/nginx/html/index.html1-1、如果说没有第一层镜像&#xff0c;是…

[html] 移动端如何设置页面以全屏模式运行?

[html] 移动端如何设置页面以全屏模式运行&#xff1f; <meta name"apple-mobile-web-app-capable" content"yes" /> 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

zTree v2.6 - v3.0 文件对比

转载于:https://www.cnblogs.com/MyFlora/archive/2012/06/05/2536377.html

cocos creator 数组_CoCos Creator中的数据类型

常用到的基本数据类型有Integer、String、Vec2、Color&#xff0c;下面的是它们最基本的使用展示&#xff1a;properties: {myNumber:{default:0,type:cc.Integer,},myString:{default:HaHa,},myVec2:{default:cc.Vec2.ZERO,},myColor:{default:cc.Color.RED,},myOtherNumber:0…

lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web

LVS Keepalived 高可用集群Keepalived的设计目标是构建高可用的LVS负载均衡的集群&#xff0c;可以调用ipvsadm工具创建虚拟机&#xff0c;不仅仅用作双机热备&#xff0c;还可以使用keepalived构建更加方便快捷的节点&#xff0c;进行相关的健康检查&#xff0c;自动移除失效…

1-5docker私有镜像仓库

1、简单操作 1、在 https://cloud.docker.com 免费注册一个 Docker 账号 2、登录 docker login #命令登录 Docker Hub。 3、注销docker logout # 退出登录。 拉取镜像 4、docker search #命令来查找官方仓库中的镜像 5、docker pull 命令来将它下载到本地。#推送镜像到自己…

[html] 写html代码时,如果缺少了结束标签,你如何检测及如何预防?

[html] 写html代码时&#xff0c;如果缺少了结束标签&#xff0c;你如何检测及如何预防&#xff1f; HTML是一门宽松式语言。即使在语法上出现了错误&#xff0c;浏览器还是会直接解析并显示结果。 2, 为了预防类似缺少结束标签这类错误。可以用过由W3C提供的标记验证服务。通…

最长上升子序列——动态规划

这个是用动态规划做的一道题&#xff0c;先学习一下动态规划的概念吧。 用动态规划解题&#xff0c;就是要把问题分解为一个个子问题&#xff0c;对子问题进行求解&#xff0c;而子问题又可以继续进行分解&#xff0c;直到一定小的规模。DP与递归类似&#xff0c;但递归会导致…