2011-12-27 8 views
1

私は、次の機能があります。この声明をどのように縮めるのですか?

<?php 
class Test{ 
function myFunction(){ 
    return array('first','second','third'); 
} 
} 
?> 

をそして、私は配列の要素をプリントアウトすることができます。

$var=new Test(); 
$varr=$var->myFunction(); 
print($varr[1]); 

は、私は$を割り当てる必要はありませんので、この文を凝縮する方法はありますvar-> myFunction()を2番目の変数(この場合は$ varr)に変更しますか?

+0

配列のインデックスを 'myFunction()'に渡して返したい場合、 –

+0

Questionerは基本的なプログラミングの対象ではなく、OOPで何かを学びたかったのです。 –

答えて

2

PHPはこれを(PHP 5.3以降)Tim Cooper already highlightedとして非常にうまくサポートしていません。だから、もしあなたが本当にこれをコンパクトにする必要があるなら、あなたは二度考える必要があります。

あなたは非常に動的に作業を行うことができます。リターンの代わりに、配列のArrayObjectによって:いくつかの追加方法やアクセスの方法で配列データを飾るだろう

class Test 
{ 
    function myFunction() 
    { 
     return new ArrayObject(array('first','second','third'), 3); 
    } 
} 

$var = new Test(); 
print($var->myFunction()->{1}); 

class Test 
{ 
    function myFunction() 
    { 
     return array('first','second','third'); 
    } 
    public function __get($name) 
    { 
     return $this->$name(); 
    } 
} 

$var = new Test(); 
print($var->myFunction[1]); 

しかし、これはアプリケーションでは本当に便利であれば、私は知らない:PHPパーサをだますとプロパティの代わりに、動的機能を提供するために、パラメータO/Wもう一つの方法は、機能のためになります。

コードをコンパクトにして独自のものを決定する理由を確認してください。

2

PHP 5.4では、あなたが行うことができます:

list(,$varr) = $var->myFunction(); 

別の解決策は、オプションのインデックスを受け入れるためにあなたの方法を変更することです:

$varr=$var->myFunction()[1]; 

それまでは、listを使用して助けるかもしれません

function myFunction($index = null){ 
    $arr = array('first','second','third'); 
    return $index == null ? $arr : $arr[$index]; 
} 
:返却する項目の
+0

hmmmm。私はv。5.2で立ち往生している。それは私が待つ必要があるように見える5.4安定が出てくるまで...バマー! –

+0

@ user522962:私は私の答えに別の解決策を追加しました –

+0

downvoteの理由は何ですか? –

関連する問題