我也是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类(用户,电影和watchlists),他们都有一个。php文件(用户。php,电影。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文件正确工作时,像我的项目?
你不必解释整个事情,如果你能把我链接到一些关于这方面的好文章/教程,我将不胜感激。(是的,我已经谷歌过了,但没有找到任何有用的)。
谢谢
如果您遵循以下简单的步骤,您将不会连续三次连接到数据库。
代替include 'database.php'
include_once 'database.php'
,并像这样编写连接代码
if(!$con) {
$con = mysqli_connect(HOST, USER, PASS);
}
您要查看的是PSR-0标准https://gist.github.com/Thinkscape/1234504
大多数现成的自动装填机在此标准下最容易工作。
在大多数PHP编码标准中,"类文件"应该包含的唯一内容是类定义。这意味着没有include
s和require
s。那么如何允许一个类访问另一个类呢?
半自动的!去读一读关于自动加载的知识,简单的解释是,你在一个单独的文件中定义了一个自动加载器(就是你实际使用这些类的那个文件),你调用的任何类,以及这些类所需要的任何类,PHP都会自动进入并获取。自动加载是伟大的,不仅因为你不必麻烦地输入include
语句,而且因为只有你实际使用的类被获取-所以它更有效。