在php中键入,重新键入并使用其变量
是否有可能在php中使用“数据类型” 我有类页面,它有变量(我使用public,我不需要private,没有安全风险,等等)。我创建了我的类的一些对象,将它们添加到数组中,然后通过foreach对它们进行攻击,我想像我的页面对象一样在foreach中使用迭代对象。所以我想让我的ide(PhpStorm)知道数组中的对象是页面类型的,这样他就可以悄悄地告诉我他的变量在php中键入,重新键入并使用其变量,php,phpstorm,type-conversion,Php,Phpstorm,Type Conversion,是否有可能在php中使用“数据类型” 我有类页面,它有变量(我使用public,我不需要private,没有安全风险,等等)。我创建了我的类的一些对象,将它们添加到数组中,然后通过foreach对它们进行攻击,我想像我的页面对象一样在foreach中使用迭代对象。所以我想让我的ide(PhpStorm)知道数组中的对象是页面类型的,这样他就可以悄悄地告诉我他的变量 在Java中,我会这样做(Page)myObject。ide知道“Juhuu程序员说,myObject应该是页面类型,所以我让他像处
在Java中,我会这样做(Page)myObject。ide知道“Juhuu程序员说,myObject应该是页面类型,所以我让他像处理页面对象一样工作,而不仅仅像处理一般对象一样”
下面的代码应该解释更多我的问题:
注意:
我知道我可以在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"
}
使用@var注释,如下所示:
foreach($allPages as $page)
{
/*
* @var PageType $page
*/
$page->doesSomething();
}
@var接受类类型及其应用的变量,您还可以在类或实例化(iirc)中的声明处使用MyObjectType[]
指示数组是类的数组
另外,使用
private
和protected
而不是public
更多的是关于良好的编程设计,而不是安全性,我建议您阅读它,以及多态性和继承性。在PHPStorm中,具体来说,将数据类型和变量放在何处并不重要。PHP及其工具有时可能是一堆奇怪的东西。我仍然渴望在PHPthanks-Everon中使用完全严格的类型暗示(不仅仅是对象),很高兴知道。。。关于你严格的暗示。。。请咬紧牙关,改用C#。我坚持。Netbeans中的符号是/*@var$variable Type*/考虑到所有语言符号都是Type variable,这很奇怪,但哦。。这是youAhaha的Javadoc,我已经考虑过了,相信我。当我在桌面应用程序中需要C#时,C#非常适合使用,但除此之外,我将继续使用PHP:)但是如果您需要添加与检索和/或设置类对象持有的数据相结合的功能,该怎么办?您必须重写应用程序的多个部分。把工作省下来,提前想一想(imo)。