不调用Php类方法

时间:2012-07-21 04:02:45

标签: php

我的PHP类有问题,当用户想跟随另一个用户调用follow方法时,当用户想要停止跟随delete_follow时,会调用:

class Follow {

    protected static $table_name = "interests";


    public function follow() {
        global $dbh;
        $sql = "INSERT INTO ".self::$table_name." (company_id,user_id,likedate) VALUES (:company_id,:user_id,NOW())";
        $follow = $dbh->prepare($sql);
        $follow->bindParam(':user_id',$_SESSION['user_id']);
        $follow->bindParam(':company_id',$_GET['company']);
        if($follow->execute() == true){
            header("Location: profile.php?company=".$_GET['company']."");
            exit;
        } else {
            header("Location: error.php");
            exit;
        }
    }

    public function delete_follow() {
        global $dbh;
        $sql = "DELETE FROM ".self::$table_name." WHERE company_id = :company_id AND user_id = :user_id LIMIT 1";
        $delete_follow = $dbh->prepare($sql);
        $delete_follow->bindParam(':user_id',$_SESSION['user_id']);
        $delete_follow->bindParam(':company_id',$_GET['company']);
        if($delete_follow->execute() == true) {
            header("Location: profile.php?company=".$_GET['company']."");
            exit;
        } else {
            header("Location: error.php");
            exit;
        }
    }   


}

我的问题是,当调用delete_follow方法时,它实际上调用了follow方法,我不知道发生了什么。

以下是关注按钮的代码:

if(isset($_POST['follow'])) {
    $follows = new Follow();
    $follows->follow();
}

if(isset($_POST['delete_follow'])) {
    $follows = new Follow();
    $follows->delete_follow();
}

请帮助。

2 个答案:

答案 0 :(得分:4)

您班级的名称是Follow。您班级中的第一个方法称为follow()。 PHP在这方面不区分大小写,并将follow()方法视为构造函数。因此,此声明 - $follows = new Follow() - 实际上会调用您班级中的follow()方法。这可能是你的问题所在。

阅读有关PHP构造函数here的更多信息。

答案 1 :(得分:0)

我认为你的表单中有错误。也许最好让一个字段follow具有布尔值,比如yesno