给定如下基本对象,我的倾向(基于使用 AS3)是$friend
可以解释$this->friend
的,但 PHP 解析器仅将$friend
其视为函数本地化的未初始化变量holler
。有没有办法在不使用的情况下访问成员变量$this->
?我的目标是发现最精简的语法。
class MyBuddy
{
private $friend = true;
public function holler()
{
if ( $friend ) // <- parser won't resolve $friend to a member variable
return 'Heeeeey Buuuuuday!';
else
return null;
}
}
更新:在考虑给出的答案之后,似乎最简洁和易于理解的方法是通过引用函数顶部的函数级变量来传递实例变量。对于引用详细实例变量的函数来说,这是一个不错的解决方案。
// Demonstrating a simple cache which abbreviates $this->thingCollection
// to $things for the function body
public function getThing( $id, $qty )
{
$things = &$this->thingCollection; // <-- pass by reference
if ( empty($things) )
$things = [];
if ( empty($things[$id]) )
$things[ $productId ] = [];
if ( empty($things[ $id ][ $qty ]) )
$things[ $id ][ $qty ] = get_thing_from_database( $id, $qty );
return $things[ $id ][ $qty ];
}