2016-07-20 9 views
1

私は最近composer.jsonで3行移行サイレックス1.3以降、ClassNotFoundExceptionが

"silex/silex": "~2.0", 
    "silex/web-profiler": "~2.0", 
    "deralex/yaml-config-service-provider": "2.0.x-dev" 

を変更することにより、V2にサイレックスV1.3を移行する。しかし、クラスの多くは、サイレックスで見つけることができないので、 ...ここで

は正しくサイレックス1.3で、私は必要なすべてをロードし、私のapp.phpファイルです:

<?php 

use Silex\Application; 
use Silex\Provider\TwigServiceProvider; 
use Silex\Provider\UrlGeneratorServiceProvider; 
use Silex\Provider\ValidatorServiceProvider; 
use Silex\Provider\ServiceControllerServiceProvider; 
use Silex\Provider\HttpFragmentServiceProvider; 
use Silex\Provider\SessionServiceProvider; 
use Silex\Provider\SecurityServiceProvider; 
use Silex\Provider\FormServiceProvider; 
use Manager\ManagerProvider; 

$app = new Application(); 
$app->register(new UrlGeneratorServiceProvider()); 
$app->register(new ValidatorServiceProvider()); 
$app->register(new ServiceControllerServiceProvider()); 
$app->register(new TwigServiceProvider()); 
$app->register(new HttpFragmentServiceProvider()); 
$app->register(new SessionServiceProvider()); 
$app->register(new FormServiceProvider()); 
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
    'translator.messages' => array(), 
)); 
$app->register(new SecurityServiceProvider(), [ 
    'security.firewalls' => [ 
     'foo'  => [ 'pattern' => '^/foo' ], 
     'default' => [ 
      'pattern' => '^.*$', 
      'anonymous' => true, 
      'form'  => [ 'login_path' => '/login','check_path' => 'connexion' ], 
      'logout' => [ 'logout_path' => '/logout' ], 
      'users'  => $app->share(function() use ($app) { 
       return new Authenticate\UserProvider($app['manager.user']); 
      }), 
     ], 
    ], 
    'security.access_rules' => [ 
     [ '^/.+$','IS_AUTHENTICATED_ANONYMOUSLY' ], 
     [ '^/foo$','' ] 
    ] 
]); 
$app['twig'] = $app->share($app->extend('twig', function ($twig, $app) { 
    // add custom globals, filters, tags, ... 

    return $twig; 
})); 

$app->register(new DerAlex\Silex\YamlConfigServiceProvider(__DIR__ . '/../app/settings.yml')); 
$app->register(new ManagerProvider($app)); 

return $app; 

まずエラー:

ClassNotFoundException in app.php line 15: 
Attempted to load class "UrlGeneratorServiceProvider" from namespace "Silex\Provider". 
Did you forget a "use" statement for another namespace? 

2番目のエラー:

UndefinedMethodException in app.php line 33: 
Attempted to call an undefined method named "share" of class "Silex\Application". 

サードエラー:

ClassNotFoundException in app.php line 56: 
Attempted to load class "YamlConfigServiceProvider" from namespace "DerAlex\Silex". 
Did you forget a "use" statement for "DerAlex\Pimple\YamlConfigServiceProvider"? 

第四エラー:私は変化とどのようにそれを修正する必要がありますかわからない

ClassNotFoundException in ManagerProvider.php line 12: 
Attempted to load interface "ServiceProviderInterface" from namespace "Silex". 
Did you forget a "use" statement for "Pimple\ServiceProviderInterface"? 

... ありがとうございました

答えて

3
  1. UrlGeneratorServiceProviderPimpleから除去したRoutingServiceProvider

    $app->register(new RoutingServiceProvider());

  2. 方法shareで置換しました。オブジェクトを返す関数を設定するだけでオブジェクトを共有できます。

    $app['object'] = function() { return new Object(); }

  3. かもしれませ作曲は、名前空間DerAlex\...でオートロードクラスに設定されていません。 \DerAlex\Silex\YamlConfigServiceProviderを使用してください。

  4. 使用文use Pimple\ServiceProviderInterfaceを追加するか、このクラスを\Pimple\ServiceProviderInterfaceとして使用してください。

http://php.net/manual/en/language.namespaces.php

+0

Thans @Max、それはポイント1&2のためにOKですが、3のために:YamlConfigServiceProvider、私はDerAlex \にきびを使用する」、 "DerAlex \サイレックス\ YamlConfigServiceProviderを使用する" を追加してみてください\ YamlConfigServiceProvider; "、変更はありません。 YamlConfigServiceProvider.phpがベンダー\ deralex \ yaml-config-service-provider \ src \ DerAlex \ Pimple – Macbernie

+1

にある場合、 'DerAlex \ Silex \ YamlConfigServiceProvider;を使用してください'を使用し、 'DerAlex \ Pimple \ YamlConfigServiceProviderを使用します。 '$ app-> register 'として使用してください(新しいYamlConfigServiceProvider(... –

+0

ポイント3、ありがとうございました!)4:ServiceProviderInterfaceでは、" Pimple \ ServiceProviderInterface;を使用します "が追加されました。 ServiceProviderInterface.phpファイルはvendor \ pimple \ pimple \ src \ Pimpleにあります – Macbernie

関連する問題