经过C和Java的一些工作后,我对PHP中的狂野西部法则越来越恼火.我真正觉得PHP缺乏的是严格的数据类型.string('0')==(int)0 ==(boolean)false的事实就是一个例子.
您不能依赖函数返回的数据类型.您既不能强制函数的参数属于特定类型,这可能会导致非严格比较,从而导致意外情况.一切都可以照顾,但它仍然打开了意外的错误.
对方法进行类型转换的参数是好的还是坏的做法?对回归进行强制转换是否有益?
IE
public function doo($foo, $bar) {
$foo = (int)$foo;
$bar = (float)$bar;
$result = $bar + $foo;
return (array)$result;
}
Run Code Online (Sandbox Code Playgroud)
这个例子非常愚蠢,我没有测试过,但我认为每个人都有这个想法.有没有理由让PHP-god按照自己的意愿转换数据类型,除了让那些不了解数据类型的人使用PHP?
我在网站上做了一些分析,发现strtolower调用花了很长时间.
背景是
function __autoload($class_name) {
require_once('app/model/' . strtolower($class_name) . '.php');
}
Run Code Online (Sandbox Code Playgroud)
结果是
_0.0092 - > ___ autoload()C:\ xxx\config.php:0_
0.0093 - > strtolower()C:\ xxx\config.php:77
0.0101 - > require-once(C:\ xxx. php)C:\ xxx\config.php:77
我在跟踪文件中的几个地方看到过这个.
然后,我在以下上下文中尝试了该函数
for($i=0;$i<100;$i++) {
strtolower('SomeStRIng' . $i)
}
Run Code Online (Sandbox Code Playgroud)
结果是
0.0026 - > strtolower()C:\ xxx\index.php:53
0.0027 - > strtolower()C:\ xxx\index.php:53
0.0027 - > strtolower()C:\ xxx\index.php :53
0.0027 - > strtolower()C:\ xxx\index.php:53
两者之间存在显着差异.当然,这并不是什么大事,但我仍然感到困惑.