簡體   English   中英

PSR4-在Composer中使用自動加載而不是require

[英]PSR4 - using autoload in composer instead of require

我是SLIM3的新手,並且遵循使用Composer進行安裝的教程 在本教程中,我嘗試使用autoload功能加載所有類,而不必使用require ,這是我的文件結構:

dev
|── composer.json
|── index.php
|──── classes
|──── vendor

這是我的composer.json文件:

{
    "require": {
        "slim/slim": "^3.0",
        "monolog/monolog": "^1.23"
    },
    "autoload": {
        "psr-4": {
            "": "classes/"
        }
    }
}

這是坐在classes下的pdf.class.php

dev
|── composer.json
|── index.php
|──── classes
     |─ pdf.class.php
|──── vendor

class pdfClass {
    public function testme(){
        return 'i am working';
        $this->logger->addInfo("Something interesting happened");
    }
}

和index.php:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

// Require for loading the vendor libraries installed by composer
require 'vendor/autoload.php';
// require 'classes/pdf.class.php'; // << If I uncomment this line it works.


$config['displayErrorDetails'] = true;
$config['addContentLengthHeader'] = false;

$app = new \Slim\App(["settings" => $config]);
$container = $app->getContainer();

$app->post('/{controller}/{function}', function (Request $request, Response $response) {
    $headers = $request->getHeaders();
    $params = $request->getParsedBody();

    $classname = $request->getAttribute('controller').'Class';

    $controller = new $classname;
    $function = $request->getAttribute('function');

    $result = $controller->$function();

    $response->getBody()->write($result);
    return $response;
});

$app->run();

不需要composer.jsonautoload部分允許我使用該類而不需要它嗎?

不知道什么是您的具體問題,但PSR-4需要的文件的名稱完全一樣一類的名字,所以你的情況可能Pdf.phppdf.class.php

終止類名對應於以.php結尾的文件名。 文件名必須與終止類名的大小寫匹配。

http://www.php-fig.org/psr/psr-4/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM