gpt4 book ai didi

PHP将变量转换为foreach循环中的对象类型

转载 作者:IT王子 更新时间:2023-10-29 01:12:55 26 4
gpt4 key购买 nike

在以下代码中,$quiz_object->personalities 包含一个 Personality 对象数组。

// Loop through each personality that exists for the quiz
foreach($quiz_object->personalities AS $existing_personality)
{

// Show all of the existing personalities
echo $existing_personality->GetQuizMakerPersonalityHTML();
}

如何在 foreach 循环中将我的变量 $existing_personality“转换”(我认为这是正确的词)作为对象类型?

我希望这样做,以便在我键入 $existing_personality-> 时,我可以获得该对象类型可用的公共(public)函数列表。

更新

目前,Zend Studio 不知道我正在循环中遍历 Personality 对象数组,它只是认为这是一个标准变量。但是,它是一种类型,我的代码运行良好。我只希望 IDE 在 foreach 循环中提示我的变量。

为了清楚起见,提示会出现在所有其他对象上,如果我有:

$personality_object = new Personality();

// I get the IDE hints here
echo $personality_object->MyFunction();

但是一旦我开始在 foreach 中循环,Zend 就无法知道我正在循环对象数组。

这就是最初在我的 Personality 对象中定义人格数组的方式:

class Personality
{

// Array of Personality objects
public $personalities = array();

}

最佳答案

这在很大程度上取决于您使用的 IDE。

在 Netbeans 和 IntelliJ 中,您可以在评论中使用 @var:

/* @var $variable ClassName */
$variable->

IDE 现在将知道 $variable 属于 ClassName 类并在 -> 之后提示。

您也可以在自己的 IDE 中试用。

您还可以在 getPersonalities() 方法中创建 @return 注释,说明返回将是一个 ClassName[],它表示 ClassName 对象的数组:

/**
* Returns a list of Personality objects
* @return Personality[]
*/
function getPersonalities() {
return $this->personalities;
}

这还取决于您的 IDE 如何解释这种类型的提示。

要在 foreach 循环中使用它,您可以执行 1:

/* @var $existing_personality Personality */
foreach( $quiz_object->personalities as $existing_personality ){
}

或 2:

foreach( $quiz_object->getPersonalities() as $existing_personality ){
}

如果您的 IDE 足够好,两者都应该启用 IDE 提示。

作为一个额外的说明,如果你想在它自己的类中使用它,你可以在声明一个类变量时使用相同的签名:

class MyClass
{

/**
* @var ClassName[] $variable List of ClassName objects.
*/
var $variable;

}

关于PHP将变量转换为foreach循环中的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com