2012-07-05 250 views
0

我要找的那種在一個數組的值直接從該對象的方法來訪問。需要幫助的語法

例如:

有了這個語法,沒有問題:

$myArray = $myObject->getArray(); 

print_r($myArray[0]) 

但是,以減少源代碼行數,如何與方法直接獲得的元素?

我這樣做,但它不是正確的:

$myArray = $myObject->getArray()[0]; 
+1

爲什麼要減少源代碼中的行數? –

+0

只是爲了知道它是否可以這樣做 – bahamut100

回答

1

如果你是在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()); 
3

以下是僅適用於PHP 5.4和所謂高。

$myArray = $myObject->getArray()[0]; 

不幸的是,PHP 5.4以下沒有更快的方法。

@deceze's answer一個很好的選擇。

0

它是IMPOSSIBRRUUU。

認真的回答: 可惜這是不可能的。你可以寫一個非常難看的包裝是這樣的:

function getValue($arr, $index) 
{ 
    return $arr[$index]; 
} 

$myArray = getValue($myObject->getArray(), 0); 

但是,這使得少可讀的代碼。

閱讀關於PHP 5.4終於等解答!

+0

感謝但有效的源代碼不易讀 – bahamut100

2

對於PHP 5.3-:

$myArray = current($myObject->getArray()); 

list($myArray) = $myObject->getArray(); 
1

但是,以減少源代碼行數,如何直接與方法得到的元素?

雖然可能與你已經證明,我要問的語法在PHP 5.4實現這一點,爲什麼你想呢?有一些方法可以在5.3中以單線形式進行,但我認爲沒有必要這樣做。線的數量肯定比代碼的可讀性不那麼有趣?

+0

你是對的,但它只是爲了我自己的文化(並且爲了增加我對OOP的理解) – bahamut100

+0

@ bahamut100有沒有在OO中規定一切應該在一行上。 –