php中的类型,重新键入它们并使用它们的变量

时间:2015-01-25 23:57:35

标签: php phpstorm type-conversion

是否有可能使用"数据类型"在PHP?
我有班级页面,它有变量(我使用公开,我不需要私人,我没有安全风险,等等)。我创建了一些我的类的对象将它们添加到数组中,然后我通过 foreach 对它们进行修改,并且我想在foreach中使用使用迭代对象,就像我的Page对象一样。所以我想知道我的ide(PhpStorm)知道数组中的对象是Page的类型,所以他可以把我的变量告诉我。
在Java中我会做这样的事情(页面)myObject 。比起知道知道" Juhuu程序员说,myObject应该是Page的类型,所以我让他像使用Page对象一样工作,而不仅仅是像一些普通对象"
下面的代码应该解释更多我的问题:

注意:
我知道我可以在foreach页面内写 - > $ url;它会起作用。但是我该怎么记住变量的所有名称。我更不可能想要记住它们或者必须找到它们,我希望它们低声说。

class Page {
   public $url;
   public $array_of_titles;
   //...
   function __construct($url,$tit) {
     $this->url = $url;
     $this->array_of_titles = $tit;
   }
}
$array_of_pages = array();
$url = "http://..."
$tit = {"aaa", "bbb", "ccc"}
$page = new Page($url, $tit);
$array_of_pages[] = $page;
//... add more pages to the array
foreach($array_of_pages as $page) {
   $my_url = $page->url; //this words but don't whisper obviously
   //because in $page could by any object
   //$my_url = (Page)$page->url; //this I would do in java to say 
   //"Hey $page is typeof Page man, I wanna whisper its methods"
}

1 个答案:

答案 0 :(得分:2)

像这样使用@var注释:

foreach($allPages as $page)
{
    /*
    * @var PageType $page 
    */
    $page->doesSomething();
}

@var采用类类型及其应用的变量,您还可以在类或实例化(iirc)中声明数组是使用MyObjectType[]的类数组。

此外,使用privateprotected代替public更多是关于良好的编程设计而不是安全性,我建议您阅读它,以及多态和继承。