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

时间:2017-10-29 16:13:28

标签: php composer-php autoload

我正在尝试自动加载文件并为我的应用设置一个入口点。我没有使用框架,使用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文件。 我不确定如何为应用程序创建此入口点,并且需要此供应商/自动加载文件,因为我已将框架用于此目标。

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

<?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();
}

1 个答案:

答案 0 :(得分:1)

据我所知,你不需要在作曲家中注册“functions.php”。您的申请可能具有以下结构:

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

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

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