我应该如何修改仅使用变量创建的方法,并应通过引用错误传递

时间:2018-06-22 14:48:26

标签: php ubuntu

我有一个名为LoginDaoImpl.php的以下类,用于检查用户的登录信息是否有效。 我实际上在使用LAMP堆栈。因此,几分钟前,我将PHP安装升级到PHP 7.0。然后,我回到正在尝试的项目中,尝试登录后突然/var/log/apache2/error.log

中出现错误

我得到的错误是:

  

仅变量应通过引用错误传递

我在这两行中得到错误:

$sp_isLoginValid->bindParam(1,$user->getUsername(),PDO::PARAM_STR);
$sp_isLoginValid->bindParam(2,$user->getPassword(),PDO::PARAM_STR);

我进行了一些研究,并提到了大多数有关PHP 7.0中有关 php.ini

中的严格警告的更改的资源。
  

严格警告(E_STRICT)在5.4.0中成为E_ALL的一部分。默认值   5.5.7中error_reporting的值不包括E_STRICT

建议在 php.ini 文件中添加error_reporting = E_ALL ~E_STRICT,但指出不建议这样做

因此,我决定在SO中寻求帮助和建议。

有什么方法可以重组我创建的function以避免出错?也许,对代码进行最小的修改?原因是我创建的大多数函数都是以类似的方式构造或模式化的,即它接受对象作为参数。

示例:

add(User $user);
update(User $user);

下面是课程。

class LoginDaoImpl implements LoginDao {

    private $connection;

    function __construct(\PDO $pdo){
        $this->connection = $pdo;
    }

    function isValid(User $user)
    {
        $isValid = 0;
        try{
            $SQL = "CALL isLoginValid(?,?)";
            $sp_isLoginValid = $this->connection->prepare($SQL);
            $sp_isLoginValid->bindParam(1,$user->getUsername(),PDO::PARAM_STR);
            $sp_isLoginValid->bindParam(2,$user->getPassword(),PDO::PARAM_STR);
            $sp_isLoginValid->execute();

            $resultSet = $sp_isLoginValid->fetchAll(PDO::FETCH_ASSOC);
            foreach($resultSet as $row){
                $isValid = $row['isValid'];
            }
        }catch (PDOException $e){
            die($e->getMessage());
        }
        return $isValid;
    }
}

我将不胜感激任何建议。可能修改得最少?

谢谢。

0 个答案:

没有答案