1

まとめようとしている Silex スケルトンでクラスのオートロードを機能させるのに問題があります。これは別のプロジェクトで機能していますが、ここで何が間違っているのかわかりません。私のディレクトリは次のようになります。

root
 -src
    -Controller
       -HelloController.php
    -app.php
 -vendor
 -web
   -index.php
 -composer.json

ここに私のindex.phpがあります

<?php
$app = require __DIR__.'/../src/app.php';
$app->run();

app.php

<?php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->get("/hello/{name}", 'App\Controller\HelloController::hello');
return $app;

HelloController.php

<?php

namespace App\Controller;

use Silex\Application;
use Symfony\Component\HttpFoundation\Response;

class HelloController
{
    public function hello($name)
    {
        return new Response('<html><head></head><body><h1>Hello, '.$name.'</h1></body></html>');
    }
}

および composer.json

{
    "require": {
        "silex/silex": "^1.3"
    },
    "autoload": {
      "psr-4": {
        "App\\": "/src"
      }
    }
}

ブラウザで index.php/hello/world を開こうとすると、次のエラーが表示されます。

InvalidArgumentException in ControllerResolver.php line 153: 
Class "App\Controller\HelloController" does not exist
4

2 に答える 2

4

あなたpsr-4は働いていません。前にドットを追加'/src'

"App\\": "./src"

またはスラッシュを最後に移動します

"App\\": "src/"

または単にスラッシュを削除します。パスは相対パスである必要があります。

于 2015-08-09T18:14:57.153 に答える
-1

composer.json の変更で

"App\\": "/src"

"App\\": "src"

コントローラーを備えた SilexSkeleton を GitHub の php クラスの例として見つけることができます : https://github.com/jaresz/SilexSkeleton

于 2016-07-16T22:04:23.487 に答える