我要找的那种在一个数组的值直接从该对象的方法来访问。需要帮助的语法
例如:
有了这个语法,没有问题:
$myArray = $myObject->getArray();
print_r($myArray[0])
但是,以减少源代码行数,如何与方法直接获得的元素?
我这样做,但它不是正确的:
$myArray = $myObject->getArray()[0];
我要找的那种在一个数组的值直接从该对象的方法来访问。需要帮助的语法
例如:
有了这个语法,没有问题:
$myArray = $myObject->getArray();
print_r($myArray[0])
但是,以减少源代码行数,如何与方法直接获得的元素?
我这样做,但它不是正确的:
$myArray = $myObject->getArray()[0];
如果你是在PHP 5.4(支持数组语法),你可以做第二个选项:
$myArray = $myObject->getArray()[0];
如果您对PHP < 5.4,你可以“修复”它的类(其中的对象是一个实例):
class Foo
{
public function getArray()
{
return $this->theArray;
}
public function getFirstItem()
{
return $this->theArray[0];
}
}
$myObject = new Foo();
print_r($myObject->getFirstItem());
以下是仅适用于PHP 5.4和所谓高。
$myArray = $myObject->getArray()[0];
不幸的是,PHP 5.4以下没有更快的方法。
见@deceze's answer一个很好的选择。
它是IMPOSSIBRRUUU。
认真的回答: 可惜这是不可能的。你可以写一个非常难看的包装是这样的:
function getValue($arr, $index)
{
return $arr[$index];
}
$myArray = getValue($myObject->getArray(), 0);
但是,这使得少可读的代码。
阅读关于PHP 5.4终于等解答!
感谢但有效的源代码不易读 – bahamut100
对于PHP 5.3-:
$myArray = current($myObject->getArray());
或
list($myArray) = $myObject->getArray();
但是,以减少源代码行数,如何直接与方法得到的元素?
虽然是可能与你已经证明,我要问的语法在PHP 5.4实现这一点,为什么你想呢?有一些方法可以在5.3中以单线形式进行,但我认为没有必要这样做。线的数量肯定比代码的可读性不那么有趣?
你是对的,但它只是为了我自己的文化(并且为了增加我对OOP的理解) – bahamut100
@ bahamut100有没有在OO中规定一切应该在一行上。 –
为什么要减少源代码中的行数? –
只是为了知道它是否可以这样做 – bahamut100