例如,是否可以编写如下代码:
int $x = 6;
str $y = "hello world";
bool $z = false;
MyObject $foo = new MyObject();
Run Code Online (Sandbox Code Playgroud)
是否可以定义这样的函数:
public int function getBalance()
{
return 555; //Or any numeric value
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*ška 53
在PHP 7中实现了"标量类型声明",例如:
public function getBalance(): int {
return 555;
}
Run Code Online (Sandbox Code Playgroud)
您需要声明,您将使用严格类型:
<?php
declare(strict_types=1);
function sum(int $a, int $b): int {
return $a + $b;
}
sum(1, 2);
?>
Run Code Online (Sandbox Code Playgroud)
更多信息:https://wiki.php.net/rfc/scalar_type_hints_v5
cod*_*gar 18
编辑:此答案适用于PHP 5.6及更早版本.正如最近的答案所述,PHP 7.0及更高版本确实对此有一些支持
原始答案:
不.自php5起支持类型提示,但"类型提示只能是对象和数组(自PHP 5.1以来)类型.不支持使用int和string的传统类型提示."
就目前而言,就目前而言,如果你问我,那就应该去了.
很不幸的是,不行!我现在正在完成一个涉及大量算法(图形理论,电路等)的大项目,因此我希望不要选择php。
我已经使用php大约10年了,但仍然相信它是一种好语言,但是必须决定!对我来说不好的是,缺少严格的键入可能对其他人也有好处。
另外,我想提到的是,我经常写一些额外的代码来支持严格的类型输入,这只是一个简单的例子:
if (is_array($r) && count($r)===0)
Run Code Online (Sandbox Code Playgroud)
所揭示的错误和隐藏情况等都是无法解释的。
有些错误和情况使我无法思考/发现先验,编写所有这些额外的代码虽然很麻烦,但至少它将使我免于愚蠢的错误!
如果我回去,也许我会在Web部件中选择php,您知道获取并向用户显示数据时,php很好,可以处理字符串,数组,与数据库进行对话等,但是对于主要核心,算法等,我会去C ++,也许是haskell ..不知道,至少是严格输入的东西。