我有一个名为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;
}
}
我将不胜感激任何建议。可能修改得最少?
谢谢。