我正在尝试验证类中的方法是否返回真值。请查看类下面的对象,并告诉我它是否是有效的语句。我正在使用它来验证数据库中是否已经存在电子邮件地址。
我的类和它的构造函数
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) {...
构造函数不能返回值,这没有任何意义。构造函数在那里创建(并返回)其类的对象。
您应该制作另一个函数来进行此检查,然后调用它。
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;
}
}
}
(附言:你可以做return $rows > 0;
)
然后你可以这样称呼它:
var $email = new CheckEmail;
if($email->check($_POST[email]) === TRUE){
// or just if($email->check($_POST[email])){
问题是,你真的需要在这里上课吗?您可以正常地声明CheckEmail
函数,而不是在它自己的类中。
构造函数不返回值。你需要一种不同的方法。http://www.php.net/manual/en/language.oop5.decon.php
尝试放置
$checkEmail = new CheckEmail($_POST[email]);
在if语句之前,然后
If($checkEmail) {...