代码之家  ›  专栏  ›  技术社区  ›  Naguib Ihab

PSR4-在composer中使用自动加载而不是require

  •  0
  • Naguib Ihab  · 技术社区  · 8 年前

    我是SLIM3的新手,被跟踪 a tutorial autoload require ,这是我的文件结构:

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

    这是我的 composer.json

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

    这是 pdf.class.php 坐在下面 classes

    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");
        }
    }
    

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

    难道不是吗 自动加载 创作者json

    1 回复  |  直到 8 年前
        1
  •  1
  •   Greg    8 年前

    Pdf.php pdf.class.php :

    终止类名对应于以结尾的文件名。php。

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