PHP类变量未分配

时间:2016-07-11 13:41:18

标签: php

我的php代码有一个奇怪的问题。这是我正在使用的php版本PHP 5.3.2-1ubuntu4.30 with Suhosin-Patch

我遇到的问题是我无法将任何内容分配给属于我的类的变量

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里面是否存在某些我在看的时候没找到的错误?任何帮助将非常感激。请询问您是否需要更多说明。

2 个答案:

答案 0 :(得分:4)

我认为问题出在这一行:

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

你确定pdo_stmt-> fetchAll(...)返回一个PortStats类型的对象吗?我不这么认为。它返回一个数组。更重要的是,我不认为你可以隐式地投射到类PortStats。

尝试:

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

答案 1 :(得分:0)

我认为下一行可能存在问题。

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

我无法在代码中的任何其他位置定义$nCircuitStatsID。 它是全球性的吗?

我还希望fetchAll()返回__CLASS__类型的数组,而不是__CLASS__的实例。