php 单元测试 静态类,可选的PHP类型提示/检查单元测试或静态分析?
PHP类型提示不支持标量变量[1],如int或string
但是,我们发现在连续集成期间注释函数中的类型(int或string)以发现错误仍然非常有用,例如:
目前我用的方法就像
function foo($s) {
//assert( is_string($s), 'not a string' );
...
}
在单元测试和开发模式期间,断言将被取消注释以发现潜在的错误.
我在寻找是否有更好的方法来做到这一点.
解决方法:
一个有趣而优雅的解决方案是AOP.您可以从代码中删除所有断言并开始使用这样的标准phpdoc:
/**
* @param string $s
*/
function foo($s) {
...
}
从他们的文件:
…with the help of 10-20 lines of code we can intercept all the
public, protected and static methods in all the classes of
application…
您可以使用它来动态拦截所有方法,读取agruments,获取ReflectionMethod对象,解析类型相关的注释并执行运行时检查.这听起来很复杂,但这很容易做到.
结果:在每个包含的PHP文件的测试过程中会占用一些运行时资源(不多),但对于你的代码库来说它看起来会更好(更干净).
php 单元测试 静态类,可选的PHP类型提示/检查单元测试或静态分析?相关推荐
- 全面理解Python中的类型提示(Type Hints)
众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...
- 第八章 函数中的类型提示
应该强调的是,Python 仍将是一种动态类型的语言,即使按照惯例,作者也不希望强制类型提示 --Guido van Rossum, Jukka Lehtosalo, and Łukasz Langa ...
- python 功能 代码_让你的Python代码实现类型提示功能
Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,但是与此同时IDE无法向静态类型语言那样分析代码,及时给我们相应的提示.为了解决这个问题,Python 3.6 新增了几个特性PE ...
- python语言必背代码-让你的Python代码实现类型提示功能
Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,但是与此同时IDE无法向静态类型语言那样分析代码,及时给我们相应的提示.为了解决这个问题,Python 3.6 新增了几个特性PE ...
- python代码-让你的Python代码实现类型提示功能
Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,但是与此同时IDE无法向静态类型语言那样分析代码,及时给我们相应的提示.为了解决这个问题,Python 3.6 新增了几个特性PE ...
- php 类示例,PHP类实例教程(二十二):类型提示
PHP是弱类型语言,向方法传递参数时候也不太区分类型.这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免.没有类型提示很危险. class Normal ...
- python应用程序类型_python – 类型提示条件可变参数应用程序
我试图键入提示构造函数的部分应用程序,一旦提供"tag"实例,它就会被完全应用.这是通过包装类实现的,包装类存储构造函数和任何部分应用的参数.由于包装器适用于多种类型,因此必须采用 ...
- php 显示对像编码,PHP面向对象之旅:类型提示
PHP是弱类型语言,向方法传递参数时候也不太区分类型.这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免. 没有类型提示很危险 下面的代码可能会出现问题 ...
- python类型提示模块包_Python checktypes包_程序模块 - PyPI - Python中文网
checktypes软件包 用于创建实用程序类的库,为类型提供了良好的抽象 检查和数据验证. 基本示例 创建 面向对象的api 在要继承的CheckType旁边选择一个基类并定义一个predicate ...
最新文章
- Lesson 6.动态计算图与梯度下降入门
- 为啥八位的计算机可以用补码表示-128
- 集群机器时间同步设置
- UVAlive 6131 dp+斜率优化
- MySQL工作笔记-解决导入外部sql中文乱码问题
- JavaScript之arguments属性
- mysql innodb 写锁_MySQL-InnoDB-锁
- 降低站长成本 推荐8个免费或低廉小型建站工具
- opencv 修改 读取路径_opencv中读取图像的绝对路径问题
- topcoder srm 440 div1
- android 没有menu菜单键,android之onCreateOptionsMenu失效,按菜单键无反应
- 2022 最新 Memcached 面试题
- 人工智能就业前景越来越严峻了,你还在坚持吗?
- 鲁大师12月新机性能/流畅榜:小米系包揽性能榜前三,流畅榜上限再突破!
- R语言逻辑回归的预测概率怎么算
- 无线蓝牙耳机哪个价位性价比最高?500以内最好的蓝牙耳机推荐
- comsol-亥姆霍兹线圈
- uniapp Modal自定义弹窗
- electron-egg使用
- mc服务器维护成本,服务器不是随便开?运营成本才值几个钱,MC玩家这种误解从何而来...