在PHP中跨多个文件包含文件的最佳方式(用于继承)

在PHP中跨多个文件包含文件的最佳方式(用于继承),php,model-view-controller,oop,inheritance,abstract-class,Php,Model View Controller,Oop,Inheritance,Abstract Class,我正在尝试编写一个简单的PHP MVC框架。现在,我在特定文件(模型、视图、控制器)中定义了一些抽象类,这些抽象类将被我创建的其他类“扩展”。例如: public my_specific_controller extends controller { // some stuff } 但是,如果我想这样做,每次我想创建一个类的实例时,我都必须包含“main”php文件和所有抽象类。有办法解决这个问题吗?有没有一种方法可以使这个非常有效,而不是因为我一遍又一遍地包含这个文件而陷入困境。我对

我正在尝试编写一个简单的PHP MVC框架。现在,我在特定文件(模型、视图、控制器)中定义了一些抽象类,这些抽象类将被我创建的其他类“扩展”。例如:

public my_specific_controller extends controller {
    // some stuff
}
但是,如果我想这样做,每次我想创建一个类的实例时,我都必须包含“main”php文件和所有抽象类。有办法解决这个问题吗?有没有一种方法可以使这个非常有效,而不是因为我一遍又一遍地包含这个文件而陷入困境。我对PHP的这方面还不熟悉(习惯于做简单的事情并在现有框架内工作)

但是,如果我想这样做,每次我想创建一个类的实例时,我都必须包含“main”php文件和所有抽象类

您需要将父类文件包含在声明类的文件中,而不是实例化类的文件中。例如:

controller.php:

abstract class Controller {
   ...
}
特定的_controller.php

require_once 'controller.php';

class SpecificController extends Controller {
    ...
}
index.php:

require_once 'specific_controller.php'

$controller = new SpecificController;

还可以帮助减少
require
语句。

只有当我有单独的抽象类文件时,自动加载才起作用,而我目前没有(它们都在一个文件中)。因此,包含一个文件(1行)比给每个新控制器一个自动加载功能(3行)要少。这很酷,但我不知道这在PHP中是可能的。谢谢,除了包含抽象类文件之外,我真的没有选择吗?没有办法创造某种形式的环境?几乎像一个全局变量,但却是一个全局包含。我可能有点偏离了可能的方向。我不太确定你的意思是什么。您需要
包含一次定义类的文件。在任何地方一旦PHP读取了文件,文件中定义的类就随处可见。也许我有点模棱两可。假设我有一个文件
abstracts.php
,其中包含
abstract\u视图
abstract\u控制器
,以及
abstract\u模型
。我创建了两个控制器
c1.php
c2.php
以及一个模型
model.php
。两个控制器和一个模型中的每一个都需要包含
abstracts.php
,以便它们“知道”要扩展什么。我正在寻找一种方法,将它包含在所有这些文件中。那就是在将任何其他文件包含在要实例化对象的文件中之前,先
包含'abstracts.php'
。当然,这是糟糕的依赖管理。您唯一的选择实际上是
require\u once
或自动加载。两者都不是问题,你可能什么都不担心。