我要找的那種在一個數組的值直接從該對象的方法來訪問。需要幫助的語法
例如:
有了這個語法,沒有問題:
$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