Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证方法返回true_Php - Fatal编程技术网

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:啊,好的。很高兴我能帮忙:-)