2015-01-02 3 views
0

Я только что понял, что PHP5 поддерживает type hinting для аргументов функции. Можно ли использовать этот тип намекая для класса атрибутов, как это:Тип атрибута класса PHP класс

private FooClass $fo; 

Или даже для создания нового объекта, как это внутри функции:

FooClass $ff = new FooClass(); 
+2

Нет, не возможно. – PeeHaa

ответ

3

Нет, это не представляется возможным применять тип атрибута, как что. Но если вы будете использовать приличный IDE как PhpStorm вы можете сделать тип подсказки в PHPDoc комментарии вроде:

class Foo 
    { 
    /** 
    * @var Bar 
    */ 
    private $barObject; 
    } 

Тогда он будет проверять и предупредить вас, когда вы пытаетесь назначить или изменить его значение с неправильным типом.

Что касается принудительного ввода типа переменной - PHP - это язык с плохой типизацией, поэтому нет, это невозможно. Опять же, при достойной IDE вы можете помочь себе с комментарием PHPDoc:

/** 
* @var $bar Bar 
*/ 
$bar = somethingThatReturnsBar(); 

но все.

2

Вы можете обеспечить функции аргумент является экземпляром определенного класса, используя следующий код ...

$fo = new FooClass(); 

function myFunction (FooClass $fo){ 
    // Your Code Here 
} 

Если $ Ф.О. аргумент не является экземпляром FooClass будет срабатывают ошибка.

2

Нет, хотя, если вам кажется, вам действительно нужно, чтобы вы могли посмотреть на Hack (http://hacklang.org/).

Вы можете, однако, контролировать установку ваших частных переменных с помощью типа намекая, в качестве аргументов:

class MyClass { 
    private $foo; 

    public function setFoo(FooClass $foo) { 
     $this->foo = $foo; 
    } 
}