我是一个相当新的OOP和PHP,我一直在阅读教程和书籍,以了解它。现在我正在开展一个个人项目(没有教程或书籍练习),我对如何组织我的课程和文件有疑问。
我有一个database.php文件,我在其中创建与数据库的连接,在我的类的__construct函数中,我调用它,如下所示:
<?php
include 'database.php';
class users {
// Database Connection
public function __construct() {
$db = new database();
}
// the rest of my functions
?>
我遇到的问题是,在我做过的教程和练习中,只有一节课。目前在我的项目中我有3个班级(用户,电影和观察名单),他们都有.php文件(users.php,movies.php和watchlists.php)
在我项目的某些页面上,我需要来自所有3个类的数据,所以我就像这样开始这些页面:
<?php
session_start();
include 'include/users.php';
include 'include/movies.php';
include 'include/watchlists.php';
$user = new users();
$movie = new movies();
$watchlist = new watchlists();
// the rest of the file
现在,很明显,当你有多个类时,这不是正确的方法,因为我连续三次创建数据库连接。
那么在处理像我这样的项目时,如何正确管理我的类,数据库连接和.php文件呢?
你不需要解释整个事情,如果你能把我链接到一些关于这个的好文章/教程,我将不胜感激。 (是的,我用谷歌搜索了它,但找不到任何有用的东西)。
由于
答案 0 :(得分:2)
如果您只遵循这些简单的步骤,则不会连续三次连接到数据库。
替换
include 'database.php'
到
include_once 'database.php'
并且像这样编写连接代码
if(!$con) {
$con = mysqli_connect(HOST, USER, PASS);
}
答案 1 :(得分:1)
在大多数PHP编码标准中,只会说&#34;类文件&#34;应该包含的是类定义。这意味着没有include
或require
。那么如何让一个班级访问另一个班级呢?
Autoloading!去阅读有关自动加载的内容,但简要说明是您在一个单独的文件中定义一个自动加载器(您实际使用该类的文件),以及您调用的任何类以及这些类所需的任何类, PHP会自动提取 。自动加载很棒,不仅因为您不必打扰输入include
语句,还因为只提取了您实际使用的类,因此效率更高。
要做的另一点,通常最好将所有课程保存在自己的文件夹中,然后实际使用外部该文件夹中的这些课程。同样,它只是一个惯例,但它也使实现自动加载更容易。
答案 2 :(得分:1)
您想要了解的是PSR-0标准https://gist.github.com/Thinkscape/1234504
大多数现成的自动加载机使用此标准最简单。