2016-09-13 7 views
0

私は、カスタムデータハンドラを構築して、ユーザにとって貴重な帯域幅を節約します。 問題は、オンザフライでオブジェクトを配列に追加しようとしています。プロパティと値を持つオブジェクトを配列に追加するPHP

期待どおりに動作しません。

すべてのヘルプは

function getName() { 
    return "test"; 
} 


class Parser { 

    private $results = []; 

    public function parseCalls($callArray){ 
    for ($i=0; $i < count($callArray); $i++) { 
     switch($callArray[$i]->call){ 
     case 'getName': 
      $results[] = (object) ['result' => getName()]; // this is where it fails. 
      break; 
     } 
    } 
    } 

    public function sendResult(){ 
    echo json_encode($this->results); 
    } 

} 

$parser = new Parser(); 


if(isset($_POST["callArray"])){ 
    // $_POST['callArray'] contains [{call: 'getName'}]; 
    $callsArray = json_decode($_POST["callArray"]); 
    $parser->parseCalls($callsArray); 

} 

$parser->sendResult(); 

をいただければ幸いどのように私は結果配列は、このようなものが含まれていること、それを作るのです。 [{result: "test"}]

はどうもありがとうございました! :)

+0

関数内の変数 '$のresults'が定義されているが、私はクラスの私有財産であることを意味していると想定されていません - すなわち:'ます$ this->結果[] = ... ' – RamRaider

+0

@ RamRaiderああ、私はそれを見ませんでした。ありがとう、トン!これは私が探していたものです。 –

答えて

1

あなたは今、その小さな難解を解決したようですが、私はこれを書いて、その間に問題を見つけました。

public function parseCalls($calls=array()){ 
    foreach($calls as $i => $call){ 
     try{ 
      switch(strtolower($call)){ 
       case 'getname': 
        $this->results[]=(object)array('result'=>getName()); 
       break; 
      } 
     }catch(Exception $e){ 
      die($e->getMessage()); 
     } 
    } 
} 
関連する問題