PHP class 属性类型提示
PHP class attribute type hint
我刚刚发现 PHP5 支持 type hinting 函数参数。是否可以将这种类型提示用于 class 属性,如下所示:
private FooClass $fo;
或者甚至在函数内部创建这样的新对象:
FooClass $ff = new FooClass();
不,不可能强制执行这样的属性类型。但是如果你使用像 PHPStorm 这样的体面的 IDE,你可以在 PHPDoc 评论中做一个类型提示,比如:
class Foo
{
/**
* @var Bar
*/
private $barObject;
}
然后当你试图用错误的类型分配或修改它的值时,它会检查并警告你。
至于强制变量类型 - PHP 是一种松散类型的语言,所以不,这是不可能的。同样,有了体面的 IDE,您可以通过 PHP 文档评论来帮助自己:
/**
* @var $bar Bar
*/
$bar = somethingThatReturnsBar();
但仅此而已。
您可以使用以下代码确保函数参数是特定 class 的实例...
$fo = new FooClass();
function myFunction (FooClass $fo){
// Your Code Here
}
如果 $fo 参数不是 FooClass 的实例,则会触发错误。
没有,不过如果你觉得你真的需要,你可以看看 Hack (http://hacklang.org/)。
但是,您可以通过在参数中使用类型提示来控制私有变量的设置:
class MyClass {
private $foo;
public function setFoo(FooClass $foo) {
$this->foo = $foo;
}
}
我刚刚发现 PHP5 支持 type hinting 函数参数。是否可以将这种类型提示用于 class 属性,如下所示:
private FooClass $fo;
或者甚至在函数内部创建这样的新对象:
FooClass $ff = new FooClass();
不,不可能强制执行这样的属性类型。但是如果你使用像 PHPStorm 这样的体面的 IDE,你可以在 PHPDoc 评论中做一个类型提示,比如:
class Foo
{
/**
* @var Bar
*/
private $barObject;
}
然后当你试图用错误的类型分配或修改它的值时,它会检查并警告你。
至于强制变量类型 - PHP 是一种松散类型的语言,所以不,这是不可能的。同样,有了体面的 IDE,您可以通过 PHP 文档评论来帮助自己:
/**
* @var $bar Bar
*/
$bar = somethingThatReturnsBar();
但仅此而已。
您可以使用以下代码确保函数参数是特定 class 的实例...
$fo = new FooClass();
function myFunction (FooClass $fo){
// Your Code Here
}
如果 $fo 参数不是 FooClass 的实例,则会触发错误。
没有,不过如果你觉得你真的需要,你可以看看 Hack (http://hacklang.org/)。
但是,您可以通过在参数中使用类型提示来控制私有变量的设置:
class MyClass {
private $foo;
public function setFoo(FooClass $foo) {
$this->foo = $foo;
}
}