我有以下代码:
class Orders{
/**
*
* @var Supplier
*/
private $suppliers; //Array of Supplier
function loopAllSuppliers(){
foreach($this->suppliers as $supplier){
$supplier->/*no suggestion*/ //Can't get the method's to show here
$this->suppliers->getSupplierName(); //methods in class Supplier show normally here
}
}
}
问题很简单。我只是希望能够为变量$supplier
声明一个类型,就像我使用$suppliers
一样。
注意:
答案 0 :(得分:16)
class Orders{
/**
*
* @var Supplier
*/
private $suppliers;
function loopAllSuppliers(){
foreach($this->suppliers as $supplier){ /* @var $supplier Supplier */
//Must declare the type again inside the foreach as Netbeans doesn't support
// defining variable as arrays in doc blocks, yet.
}
}
}
答案 1 :(得分:4)
这应该有效:
class Orders
{
/**
* @var Supplier[]
*/
private $suppliers;
public function loopAllSuppliers()
{
foreach($this->suppliers as $supplier) {
}
}
}
答案 2 :(得分:3)
对我来说这不起作用:
foreach ($suppliers as /* @var $supplier Supplier */ $supplier) {
$supplier->/*should have suggestions*/
}
我的解决方案:
foreach ($suppliers as $supplier) {
if($suppliers instancof Supplier) {
$supplier->
}
}
答案 3 :(得分:2)
如果$ this->供应商是一个数组,请尝试此操作:
function loopAllSuppliers(){
foreach($this->suppliers as $key => $supplier){
$supplier->/*no suggestion*/ //Can't get the method's to show here
$this->suppliers[$key]->getSupplierName(); //should work
$this->suppliers->getSupplierName(); //methods in class Supplier show normally here
}
}
答案 4 :(得分:0)
您可以通过执行以下操作来实现此目标(在netbeans中):
foreach ($suppliers as /* @var $supplier Supplier */ $supplier) { $supplier->/*should have suggestions*/ }
答案 5 :(得分:-1)
通过PHP7和PHPStorm,我可以使用:
use path/to/Supplier; //needs the path for your class Supplier
foreach ($suppliers as /* @var $supplier Supplier */ $supplier) {
echo $supplier->getName(); //Output each Name
}