如何使用 compose autoload 和 psr-4 自动加载文件

How to autoload files using compose autoload and psr-4

我正在尝试自动加载文件并为我的应用程序设置一个入口点。我没有使用框架,而是使用 OOP。 我的 composer.json 文件是:

{
    "require": {
        "tebazil/db-seeder": "^0.0.0"
    },
    "autoload": {
        "psr-4": {
            "vendor\": "vendor/",
            "App\": "src/classes/"
        },
        "files": [
            "src/functions.php"
        ]
    }
}

在此文件中 functions.php 我想包含 vendor/autoload.php 文件。 我不确定如何为应用程序创建这个入口点以及需要这个 vendor/autoload 文件,因为我已经使用框架来实现这个目标。

这是 functions.php 的当前内容,但是当我渲染 index.html 视图文件时还有另一个问题,但是有 ajax 请求。 但是,为应用程序创建 bootstrap 文件并自动加载必要文件的正确方法是什么?

<?php
namespace App;

require_once __DIR__ . '/../vendor/autoload.php';

use App\Db;
use App\User;
class Functions
{

    public function render()
    {
        ob_start();
        include(__DIR__ . '/../index.html');
        $content = ob_get_contents();
        ob_end_clean();
        echo $content;
    }
}

if(!($_GET && array_key_exists('name', $_GET))) {
    $functions = new Functions();
    $functions->render();

}

if($_GET && array_key_exists('name', $_GET)){
    $user = new User();
    $users = $user->getUsers();
}

据我所知,您不需要在 Composer 中注册 "functions.php"。您的应用程序可能具有以下结构:

- app_folder/
  - src/
    - classes/
    - index.html
  - public/
    - functions.php
  - vendor/
    - ...

其中 "functions.php" 文件用作应用程序入口点。将您的 Web 服务器指向 "public" 文件夹,这样所有其他文件都可以由您的 php 代码访问,但用户不能访问。

您可以在 "functions.php" 中实现您的路由或类似任务,并将模型和视图等组件放置到 "src",您将获得简单而结构化的应用程序。