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