档案及;面向对象PHP中的类结构
我对OOP和PHP也相当陌生,我一直在阅读教程和书籍来掌握它的窍门。现在我正在做一个个人项目(没有教程或书本练习),我有一个关于如何组织我的课程和文件的问题 我有一个database.php文件,在其中我创建了与数据库的连接,并在类的_构造函数中调用它,如下所示:档案及;面向对象PHP中的类结构,php,file,structure,Php,File,Structure,我对OOP和PHP也相当陌生,我一直在阅读教程和书籍来掌握它的窍门。现在我正在做一个个人项目(没有教程或书本练习),我有一个关于如何组织我的课程和文件的问题 我有一个database.php文件,在其中我创建了与数据库的连接,并在类的_构造函数中调用它,如下所示: <?php include 'database.php'; class users { // Database Connection public function __construct() { $db = new
<?php
include 'database.php';
class users {
// Database Connection
public function __construct() {
$db = new database();
}
// the rest of my functions
?>
我的问题是,在我做的教程和练习中,只有一节课。目前在我的项目中,我有3个类(users、movies和watchlist),它们都有一个.php文件(users.php、movies.php和watchlist.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
如果只按照以下简单步骤操作,您将不会连续三次连接到数据库
替换
include 'database.php'
到
然后像这样编写连接代码
if(!$con) {
$con = mysqli_connect(HOST, USER, PASS);
}
若只遵循以下简单步骤,您将不会连续三次连接到数据库
替换
include 'database.php'
到
然后像这样编写连接代码
if(!$con) {
$con = mysqli_connect(HOST, USER, PASS);
}
在大多数PHP编码标准中,会说“类文件”应该包含的唯一内容是类定义。这意味着没有include
s或require
s。那么,如何允许一个类访问另一个类呢
!!阅读有关自动加载的内容,但简单的解释是,您在一个单独的文件中定义了一个自动加载程序(与您实际使用的类在同一个文件中)、您调用的任何类以及这些类所需的任何类,PHP都会自动执行并获取。自动加载非常好,这不仅是因为您不必费心键入include
语句,还因为只有您实际使用的类才会被获取,所以它更高效
还有一点需要说明,通常最好将所有类保存在自己的文件夹中,然后实际使用该文件夹之外的中的类。同样,这只是一种约定,但它也使实现自动加载变得更容易。在大多数PHP编码标准中,都会说“类文件”应该包含的唯一内容是类定义。这意味着没有include
s或require
s。那么,如何允许一个类访问另一个类呢
!!阅读有关自动加载的内容,但简单的解释是,您在一个单独的文件中定义了一个自动加载程序(与您实际使用的类在同一个文件中)、您调用的任何类以及这些类所需的任何类,PHP都会自动执行并获取。自动加载非常好,这不仅是因为您不必费心键入include
语句,还因为只有您实际使用的类才会被获取,所以它更高效
还有一点需要说明,通常最好将所有类保存在自己的文件夹中,然后实际使用该文件夹之外的中的类。同样,这只是一种约定,但它也使实现自动加载变得更容易。您想了解的是PSR-0标准
大多数现成的自动装弹机使用此标准最容易工作 您想了解的是PSR-0标准
大多数现成的自动装弹机使用此标准最容易工作 使用自动加载器以避免大量的包含(或者改为使用include_一次,并将数据库连接注入任何需要它的类自动加载时,您也可以使用一个确保只运行一个类实例的单例类,尽管自动加载可能更好您可能会找到相关的实例谢谢Mark建议autoloader。我已经查找了它,它看起来非常适合我们非常感谢使用自动加载器来避免大量的包含(或者改为使用include_一次,并将数据库连接注入任何需要它的类自动加载时,您也可以使用一个确保只运行一个类实例的单例类,尽管自动加载可能更好您可能会找到相关的实例谢谢Mark建议autoloader。我已经查找了它,它看起来非常适合我们谢谢谢谢你的信息,我在PHP中找到了autoloader,我现在正在使用它,谢谢。谢谢你的信息,我在PHP中找到了autoloader,我现在正在使用它,谢谢。