2

我也是 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 文件?

您不必解释整个事情,如果您可以将我链接到一些关于此的精彩文章/教程,将不胜感激。(是的,我用谷歌搜索了它,但找不到任何有用的东西)。

谢谢

4

3 回答 3

2

如果您只遵循这些简单的步骤,您将不会连续三次连接到数据库。

代替

include 'database.php'

include_once 'database.php'

并编写您的连接代码有点像这样

if(!$con) {
    $con = mysqli_connect(HOST, USER, PASS);
}
于 2013-05-20T15:06:55.150 回答
1

在大多数 PHP 编码标准中,“类文件”应该包含的唯一内容就是类定义。这意味着没有includes 或requires。那么如何允许一个类访问另一个类呢?

自动加载!去阅读有关自动加载的信息,但简要说明是您在一个单独的文件(与您实际使用其中的类的文件相同的文件)中定义一个自动加载器,以及您调用的任何类,以及这些类所需的任何类, PHP 去自动获取。自动加载很棒,不仅因为您不必费心输入include语句,还因为只获取您实际使用的类 - 所以它更有效。

还有一点需要说明,通常最好将所有类保存在它们自己的文件夹中,然后实际使用该文件夹外部的这些类。同样,这只是一个约定,但它也使实现自动加载更容易一些。

于 2013-05-20T15:09:41.307 回答
1

您要研究的是 PSR-0 标准https://gist.github.com/Thinkscape/1234504

大多数现成的自动装载机使用此标准最容易工作。

于 2013-05-20T15:10:19.887 回答