在另一个类PHP中使用一个类,不包含


Use a Class in another Class PHP, w/o include

我现在基本上有3个重要的文件。我想在LOGIN类中使用DB类中的一个函数。这些是我的档案。我试着包括DB类,但我会声明两次,这是你做不到的

----index.php------显示内容的

<?php
     session_start();

include './libs/database.php';
$mysql = new Database();
include './libs/login.php';
$login = new Login();
$mysql->connect("---", "user", "pass"); 
$mysql->usedatabase("db"); 
    ?>
<!DOCTYPE html>
    <html>
        <body>
            <div id="wrapper">
                             CONTENT GOES HERE
            </div>          
        </body>
    </html>
---

---login.php ---
    class Login{
        public function isLoggedIn(){
            if(isset($_SESSION['user_id'])){
                return true;
            }else{
                return false;
            }
        }

        public function UserLogin($email,$password){
            // login function
                        $DB->selectwhere(...);
        }
        public function securePassword($pass){
            $pass =  md5($pass);
                return $pass;
        }
    }
---

--- database.php ---
 class Database{

       //Database Functions

 }

了解PHP的"自动加载"功能。实际上,只有当类还不存在于堆中时,才可以按需查找它们。

将Login中的securePassword()函数设置为静态函数,这样就可以在没有Login类实例的情况下调用它。

登录::securePassword()

将数据库类移动到文件Database.php。在index.php顶部,使用require_one('Database.php');以包括Database类。然后将UserLogin()函数更改为:

    public function UserLogin($email,$password){
        // login function
                    $DB = new Database;
                    $DB->selectwhere(...);
    }

阅读关于关键字extends的PHP.net文档:http://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends

一个类可以通过在类声明中使用关键字>extends来继承另一个类的方法和属性。

所以你的登录类将是

class Login extends Database{
    public function isLoggedIn(){
        if(isset($_SESSION['user_id'])) {
            return true;
        }
        else {
            return false;
        }
    }

    public function UserLogin($email,$password){
        parent::login();
    }
    public function securePassword($pass){
        $pass =  md5($pass);
        return $pass;
    }
}

您可以使用访问Database类的属性或方法

parent::var_name
parent::method()