PHP7 为什么不直接支持变量类型声明,而仅仅是在函数参数中定义?

2015-06-24 19:03:22 +08:00
 blue7wings

现在可以这么写了:

function func(int $param_1,int $param_2){
    return $param_1 + $param_2;
}

$result = func('23',23.44);//47

我觉得能够这样写就更好了:

int $param_1 = 1;
string $param_2 = "hello world";

PHP7 Reference: https://github.com/tpunt/PHP7-Reference
安装小教程: http://www.blue7wings.com/post/91

我觉得还是强类型好,各位小伙伴如何认为?(:

14590 次点击
所在节点    PHP
28 条回复
cst4you
2015-06-24 19:09:19 +08:00
你可以 $param_1 = (int)1;
nightspirit
2015-06-24 23:03:16 +08:00
因为这样的话对于之前的几个版本 变动太大了,虽然仅仅现在这样就已经搞的很不兼容了,但还是要考虑向下兼容问题。
ffffwh
2015-06-24 23:21:20 +08:00
函数一般是一个人写的,类型自己清楚。

本地变量的类型推导是比较简单的,只要给出函数参数类型,就能写出type checker,从而提前保证类型安全。

当然函数参数的类型也能推导,这就比较复杂了(unification?)。
chaucerling
2015-06-24 23:34:30 +08:00
动态语言就是变量没类型,值才有类型
jadecoder
2015-06-25 01:25:20 +08:00
语言和用户互相影响。现在用PHP的人应该都习惯了弱类型,就没必要增加这个feature。喜欢强类型的人可以选择别的语言
cevincheung
2015-06-25 04:48:17 +08:00
function e(string $param1,string $parma2):int
echo e('1',2.33333333)
banri
2015-06-25 04:58:05 +08:00
这…JS都不敢大声说话了
flowfire
2015-06-25 05:03:20 +08:00
php本来就是弱类型的语言,你非要人家转型。。。
kn007
2015-06-25 07:52:39 +08:00
为何一定要强类型
neilwong
2015-06-25 08:23:16 +08:00
通过赋值转换类型是脚本语言的最大特色了吧,而且函数上规定类型也是可选的,只是方便了做类型校验。如果变量也可以声明类型,那就需要增加一种表示方法了,例如#a或者$$a这种,和原本的区分开,表示此变量类型无法转化
ruchee
2015-06-25 08:41:19 +08:00
主要是考虑兼容性了,良好的向下兼容是PHP得以持续发展的秘密武器,反面例子可参考Python3与Perl6
blue7wings
2015-06-25 08:50:01 +08:00
应该是兼容的问题了,保证了php7和之前版本的兼容,而不是像python3和python2...
demonchang
2015-06-25 09:22:16 +08:00
- -! 顶一个
anyforever
2015-06-25 09:36:21 +08:00
mahone3297
2015-06-25 09:46:16 +08:00
支持强类型。。。
irgil
2015-06-25 09:55:39 +08:00
支持强类型的
Actrace
2015-06-25 11:16:51 +08:00
5.6也可以这么玩,而且可以指定一个类的类型,
比如 class A ,那么在调用的时候可以 function a(A $param)
LaughingMeMe
2015-06-25 14:22:53 +08:00
$intA,$strB,$arrC,$objD
jsq2627
2015-06-25 14:39:44 +08:00
我记得函数参数的类型只能算得上“类型提示”,没有严格检查的。这种写法用的多的地方应该是依赖注入吧。
lincanbin
2015-06-25 14:55:12 +08:00
为什么不用C++呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/200879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX