PHP面向对象"严格的标准:只有变量才能通过引用传递给"

时间:2014-04-28 02:16:19

标签: php oop

所以我已经阅读了太多这样的问题,并且还阅读了PHP: Passing by reference manual,但仍然无法弄清楚为什么我会看到这个问题。

所以我有PHP Class

class ProfileTranslator extends EntityTranslator {

    public function getProfile($identifier) {
        try {
            $stmt = $this->dbConn->prepare("CALL get_profile(?)");            
            $stmt->bindParam(1, $identifier, \PDO::PARAM_STR);
            $stmt->execute();
            $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
            unset($stmt);
            $count = count($rows);
            if ($count == 1) {
                $row = $rows[0];
                $profile = new entity\Profile();
                $this->assignProfileData($row, $profile);

                // more stuff below...

    }


    private function assignProfileData($row, $profile) {
        $profile->setProfileId($row['profileid']);
        // do some more ->setXYZ's()
        $this->getAccount($profile); // GETTING ERROR HERE (THIS IS LINE 119)
    }

    private function getAccount($profile) {
        // get the account stuff here
    }
}

错误:

  

(!)严格标准:只应通过引用传递变量   在ProfileTranslator.php中   在第119行

此代码有什么问题? $profile不是变量吗?

1 个答案:

答案 0 :(得分:0)

$profile是一个变量,但它包含一个对象,一个由$profile->setProfileId

访问的对象
$profile = new entity\Profile();

严格标准不应该通过引用传递,如在函数中:

$this->getAccount($profile);