1

returnステートメントの前に結果をprint_rできても、このメソッドは常にfalseを返すようです。常にfalseになります。問題のメソッド....

    public static function getGroupOptions($pid=0, $ogid=0) {

        if($data = self::getOptionsData($pid, $ogid)) {
            $Options = array();
            Load::Object('ProductOption');
            foreach($data as $key => $rec) {
                $Option = new ProductOptionObject;
                $Option->Populate($rec);
                array_push($Options, $Option);

            }

            //echo "<pre>";print_r($Options);echo "</pre>";die;  
            return $Options;
        }
        return false;
    }

print_r は ProductOptionObject の配列を正しいデータで問題なくダンプします。

これは通話回線...

            $Options = ProductOptionFactory::getGroupOptions($this->pId, $this->getBean('ogId'));
            //echo gettype($Options); echo $Options === false ? "FALSE" : "NOT FALSE"; die;

デバッグ行は常に「ブール値 FALSE」を出力します。

使用: PHP 5.3.14 / Apache2 2.2.8 / CentOS 5.8

4

3 に答える 3

0

print_r の出力をキャプチャしたい場合は、return パラメータを使用します。

print("<pre>" . print_r($res, true) . "</pre>");
于 2012-10-13T04:24:25.047 に答える
0

self exの代わりにstaticを使用します。

self::getOptionsData($pid, $ogid);

/** rather use */ 

static:getOptionsData($pid, $ogid);

しかし、これは関係なく完全に正常に動作します:

php> class A {
 ...    public static function getOpt() {
 ...       return array(1,2,3);
 ...    }
 ...    public static function getGrpOpt() {
 ...       if (false != $opt = self::getOpt()) {
 ...          return $opt;
 ...       }
 ...       return false;
 ...    }
 ... }

php> var_export(A::getGrpOpt())
array (
  0 => 1,
  1 => 2,
  2 => 3,
)

したがって、問題は、表示されていない getOptionsData 関数にあると思われます。

また、指示どおりに $Options が返されると確信しているため、内部デバッグを印刷する方法を示すと役立ちます。他に選択肢はありません。

var_dump または var_export を使用して、デバッグ中に出力された偽の値を簡単に確認します。

于 2012-10-12T17:37:26.920 に答える
0

実際のコードにはタイプミスがあるはずです。あなたのコードは問題ないようです。コードをデバッグしてみると、どこを見逃しているかがわかります。

于 2012-10-12T11:34:19.290 に答える