我现在基本上有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
}
答案 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()