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

时间:2012-08-29 17:23:34

标签: php oop class

我现在基本上有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


 }

4 个答案:

答案 0 :(得分:2)

了解PHP的“自动加载”功能。实际上,只有在堆中尚不存在类时才能按需查找类。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

的PHP.net文档
  

类可以通过在类声明中使用关键字&gt; 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()

答案 3 :(得分:0)

使Login中的securePassword()函数成为一个静态函数,这样你就可以在没有Login类实例的情况下调用它。

登录:: securePassword()