我正在尝试验证我班级中的方法是否返回了真值。请查看课程下面的我的对象并告诉我它是否是有效的声明。我使用它来验证数据库中是否已存在电子邮件地址。
我的班级和它的构造函数
class CheckEmail {
public function __construct($email) {
$db = Database::GetHandler();
$sql = "SELECT email from users WHERE email='$email'";
$stmt = $db->prepare($sql);
$stmt->execute();
$rows = $stmt->rowCount();
if($rows > 0) {
return true;
} else {
return false;
}
}
}
我这个班的对象:
if($checkEmail = new CheckEmail($_POST[email])==true) {...
答案 0 :(得分:4)
构造函数无法返回值,这没有任何意义。构造函数用于创建(并返回)其类的对象。
您应该创建另一个函数来执行此检查,然后调用它。
class CheckEmail {
public function check($email) {
$db = Database::GetHandler();
$sql = "SELECT email from users WHERE email='$email'";
$stmt = $db->prepare($sql);
$stmt->execute();
$rows = $stmt->rowCount();
if($rows > 0) {
return true;
}
else {
return false;
}
}
}
(P.S。你可以做return $rows > 0;
)
然后你可以这样称呼它:
var $email = new CheckEmail;
if($email->check($_POST[email]) === TRUE){
// or just if($email->check($_POST[email])){
事情是,你真的需要上课吗?你可以正常声明CheckEmail
函数,而不是在它自己的类中声明。
答案 1 :(得分:3)
构造函数不返回值。你需要一个不同的方法。 http://www.php.net/manual/en/language.oop5.decon.php
答案 2 :(得分:-3)
尝试放
$checkEmail = new CheckEmail($_POST[email]);
在if语句之前,
If($checkEmail) {...