Php 验证方法返回true
我试图验证类中的方法是否返回真值。请看我的类下面的对象,并告诉我它是否是一个有效的声明。我用它来验证数据库中是否已经存在电子邮件地址 我的类和它的构造函数Php 验证方法返回true,php,Php,我试图验证类中的方法是否返回真值。请看我的类下面的对象,并告诉我它是否是一个有效的声明。我用它来验证数据库中是否已经存在电子邮件地址 我的类和它的构造函数 class CheckEmail { public function __construct($email) { $db = Database::GetHandler(); $sql = "SELECT email from users WHERE email='$email'"; $stmt = $db->pre
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;
}
}
}
(请注意,您只需执行返回$rows>0;
)
然后你可以这样称呼它:
var $email = new CheckEmail;
if($email->check($_POST[email]) === TRUE){
// or just if($email->check($_POST[email])){
问题是,你真的需要在这里上课吗?您可以正常地声明
CheckEmail
函数,而不是在它自己的类中。构造函数不能返回值,这没有任何意义。构造函数用于创建(并返回)其类的对象
您应该创建另一个函数来执行此检查,然后调用该函数
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;
}
}
}
(请注意,您只需执行返回$rows>0;
)
然后你可以这样称呼它:
var $email = new CheckEmail;
if($email->check($_POST[email]) === TRUE){
// or just if($email->check($_POST[email])){
问题是,你真的需要在这里上课吗?你可以正常地声明CheckEmail函数,而不是在它自己的类中
$checkEmail = new CheckEmail($_POST[email]);
在if语句之前,然后
If($checkEmail) {...
试一试推杆
$checkEmail = new CheckEmail($_POST[email]);
在if语句之前,然后
If($checkEmail) {...
这不是OOP应该如何工作的。如果需要返回
true
或false
的函数,请创建一个函数。我不知道当你不从构造器返回一个对象时PHP在做什么,但是即使它返回布尔值,这也是一个糟糕的设计。学会用PDO做一个正确的准备好的查询,否则你会被黑客攻击,如果你还没有准备好的话。可能是@Brad的重复,为什么你认为我不知道准备好的语句,仅仅因为这个方法不是用一个来写的。我更希望你以建设性的方式回答这个问题,而不是做出假设。@stevenpepe,这是一个非常安全的假设,任何知道SQL语句所带来的危险(和简单问题)的人都不会以这种方式编写代码。我正试图帮助你,如果你不需要我的建议,那当然是你的特权。OOP不是这样工作的。如果需要返回true
或false
的函数,请创建一个函数。我不知道当你不从构造器返回一个对象时PHP在做什么,但是即使它返回布尔值,这也是一个糟糕的设计。学会用PDO做一个正确的准备好的查询,否则你会被黑客攻击,如果你还没有准备好的话。可能是@Brad的重复,为什么你认为我不知道准备好的语句,仅仅因为这个方法不是用一个来写的。我更希望你以建设性的方式回答这个问题,而不是做出假设。@stevenpepe,这是一个非常安全的假设,任何知道SQL语句所带来的危险(和简单问题)的人都不会以这种方式编写代码。我正试图帮助你,如果你不需要我的建议,那当然是你的特权。$checkEmail
将是一个对象而不是布尔值,因为构造函数只返回他们创建的对象。你不能从构造函数返回值。如果($var=function())有效,则也应;=
运算符将返回刚刚设置的值。$checkEmail
将是一个对象而不是布尔值,因为构造函数只返回他们创建的对象。您不能从构造函数返回值。如果($var=function())
有效,则也应;=
操作符将返回刚刚设置的值。谢谢。这个很好用。不,这门课太过火了。我用这个例子来说明如何从类方法返回值。@stevenpepe:啊,好的。很高兴我能帮忙:-)谢谢你,火箭。这个很好用。不,这门课太过火了。我用这个例子来说明如何从类方法返回值。@stevenpepe:啊,好的。很高兴我能帮忙:-)