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,一经查实,立即删除!

相关文章

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#进入容器执…

mysql 启动_mysql安装、启动

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

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

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

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

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

zabbix入门之添加主机

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

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

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

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

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

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

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

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 命令来将它下载到本地。#推送镜像到自己…

NCoreCoder.Aop详解

于今天&#xff0c;功能终于完善度到比较满意的程度了 准备好好写一篇文章&#xff0c;而不是之前的流水账&#xff0c;分享一下最近这些天的踩坑 一开始AOP选的微软提供的DispatchProxy 关于这个&#xff0c;有大佬的文章&#xff0c;可以看看&#xff0c;了解一下 https://ww…

主类网络号怎么算_一文了解网络文化经营许可证的审批范围

3月10日&#xff0c;北京市文化和旅游局发布《关于电商类、教育类、医疗类、培训类、金融类、旅游类、美食类、体育类、聊天类不需要申请办理的特别提示》(以下简称《特别提示》)。《特别提示》指出&#xff0c;随着互联网技术的快速发展&#xff0c;利用互联网从事文化经营活动…

idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦

日常开发过程中&#xff0c;项目常常都会使用Redis来做缓存或者Session服务器&#xff0c;为了更直观方便&#xff0c;开发者常常会使用一些可视化工具&#xff0c;如 Redis Desktop Manager、Redis Clent等&#xff0c;但界面UI做得不尽人意&#xff0c;作为当今时代&#xff…

javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...

学习Excel技术&#xff0c;关注微信公众号&#xff1a;excelperfect数组函数是可以提供多个值的Excel内置函数。下面列出了8个Excel内置的数组函数&#xff1a;TRANSPOSE函数MODE.MULT函数(在Excel 2010中引入)TREND函数FREQUENCY函数LINEST函数MMULT函数MUNIT函数(在Excel 201…

linux python安装教程_Linux系统如何安装Python?新手教程

新手入门Python的第一步就是要在你的计算机上安装好Python。有些人可能要问了&#xff0c;Linux系统如何安装Python&#xff1f;本文为你准备了一份新手安装Python的教程&#xff0c;几乎是手把手教你如何操作&#xff0c;你只要尽量照着下面的教程说明&#xff0c;就能成功地在…

1-6docker数据共享与持久化

1、在 Docker 内部以及容器之间管理数据&#xff0c;在容器中管理数据主要有两种⽅式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09; 挂载主机⽬录 (Bind mounts)2、数据卷 数据卷 是⼀个可供⼀个或多个容器使⽤的特殊⽬录&#xff0c;它绕过 UFS &#xff0c;可以提…

中yeti不能加载_第二十章_类的加载过程详解

类的加载过程详解概述在 Java 中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义&#xff0c;引用数据类型则需要进行类的加载按照 Java 虚拟机规范&#xff0c;从 Class 文件到加载到内存中的类&#xff0c;到类卸载出内存位置&#xff0c;它的整个生命…

泛型参数怎么new_泛型编程,你不知道?(基础篇)

关注“杜明c”&#xff0c;每天进步一点点&#xff01;我们学习C&#xff0c;就常常有人提起泛型编程&#xff0c;什么是泛型编程&#xff1f;我就给大家简单聊一聊。摘要-什么是泛型编程为什么使用泛型编程使用方法什么是泛型编程泛型编程&#xff0c;简而言之&#xff0c;就是…

zabbix入门之添加监控项

zabbix入门之添加监控项 添加一个不带参数的监控项&#xff08;system.cpu.switches&#xff09; 进入“配置”-->“主机”选择某主机的“监控项” 选择创建监控项 键值后边的“选择”提供了大量的键值&#xff0c;带有[ ]的需要定义参数值&#xff0c;这里选择system.cpu.s…