私は最近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"?
... ありがとうございました
Thans @Max、それはポイント1&2のためにOKですが、3のために:YamlConfigServiceProvider、私はDerAlex \にきびを使用する」、 "DerAlex \サイレックス\ YamlConfigServiceProviderを使用する" を追加してみてください\ YamlConfigServiceProvider; "、変更はありません。 YamlConfigServiceProvider.phpがベンダー\ deralex \ yaml-config-service-provider \ src \ DerAlex \ Pimple – Macbernie
にある場合、 'DerAlex \ Silex \ YamlConfigServiceProvider;を使用してください'を使用し、 'DerAlex \ Pimple \ YamlConfigServiceProviderを使用します。 '$ app-> register 'として使用してください(新しいYamlConfigServiceProvider(... –
ポイント3、ありがとうございました!)4:ServiceProviderInterfaceでは、" Pimple \ ServiceProviderInterface;を使用します "が追加されました。 ServiceProviderInterface.phpファイルはvendor \ pimple \ pimple \ src \ Pimpleにあります – Macbernie