2016-07-11 11 views
0

私のPHPコードに奇妙な問題があります。これは私がPHP 5.3.2-1ubuntu4.30 with Suhosin-Patchを使用しているPHPのバージョンです。PHPクラスの変数が割り当てられていません

私が午前問題は、私は私のクラスの一部

namespace Stats\POTSPortStats; 


use PDO; 
use Stats\Port; 
use Stats\POTSPortStats\IPHosts\IPHosts; 

class PortStats extends Port 
{ 

    public $vcPortOnHookStatus; 
    public $vcPortImpedance; 
    public $ipHosts; 

    /** 
    * @param $secretValue int 
    * @param $pdo_conn PDO 
    * @return PortStats[] 
    */ 
    public static function getAll($secretValue, $pdo_conn){ 
     try { 
      $query = 
       "SELECT * FROM secretTable WHERE secretColumn = :secretValue"; 
      $pdo_stmt = $pdo_conn->prepare($query); 
      $pdo_stmt->bindValue(":secretValue", $secretValue, PDO::PARAM_INT); 
      $pdo_stmt->execute(); 

      /** @var PortStats $result */ //This works right 
      $result = $pdo_stmt->fetchAll(PDO::FETCH_CLASS, __CLASS__); 

      //other is assigned an Array of IPHosts classes 
      $other = IPHosts::getAll($secretValue, $pdo_conn); 
      echo json_encode($other); 
      //Checked for result, it is there. 
      $result->ipHosts = $other; 

      //Check just assigned value 
      var_dump($result->ipHosts); 
      //Value was NULL 
     } catch (\PDOException $e) { 
      //nothing here 
      var_dump($e); 
     } 
     //The rest of the result is returned correctly 
     return $result; 
    } 

は私が一望できています私のコードに何か問題があるのである変数に何かを割り当てることができないということでしょうか?私が見たときに見つけられなかったPHPのこのバージョンの内部に何らかのバグがありますか?どんな助けでも大歓迎です。より明確にする必要があるかどうか尋ねてください。

+0

エラーが表示されますか?さらに重要なのは、エラー報告が有効になっていることですか? – Script47

+0

私は間違いをしていません。 –

+0

PHPがすべてのエラーを表示するように設定されていることを確認してください: 'ini_set( 'display_errors'、 '1');および' error_reporting(E_ALL); ' –

答えて

4

私は、問題は、このラインにいると思う:あなたはpdo_stmt-> fetchAllのは(...)タイプPortStatsのオブジェクトを返すことを確認してください

$result = $pdo_stmt->fetchAll(PDO::FETCH_CLASS, __CLASS__); 

ていますか?私はそうは思わない。配列を返します。さらに、私はあなたがクラスPortStatsに暗黙的にキャストできるとは思わない。

試してみてください。

$results=$pdo_stmt->fetchAll(PDO::FETCH_CLASS, __CLASS__); 
foreach($results as $result){ 
    var_dump($result); 
} 
+0

これはまだ私がまだテストする機会がなかったと思っていたものです。 –

+0

私はまだテストしていませんが、これが問題であったと確信しています。これらの種類のものは、あなたがそれを投稿した後すぐにそれを見てください。 –

+0

これは/ ** @var PortStats [] $ result * /だったはずです。そして、 'IPHosts'クラスのコードを変更してください。 –

0

私は次の行に問題があるかもしれないと思います。

$other = IPHosts::getAll($nCircuitStatsID, $pdo_conn); 

私は$nCircuitStatsIDがあなたのコードのどこにも定義されて見ることができません。 それはグローバルですか?

または、__CLASS__のインスタンスではなく、タイプ__CLASS__の配列を返すとも考えられます。

+0

これは$ secretValueと同じですが、変更するのを忘れてしまいました。 –

+0

その場合、問題は@DreamBlobと同じであると思います。 –

関連する問題