私はしばらくの間Silexを今まで問題なく使用してきました。私は新しいサービスを追加したり、基本的なサイトを作成したりすることができました。残念ながら、私は新しいサービスを一から作成することに固執しています...私は何が間違っているのか分からず、正しい方向性は今のところうまくいくでしょう。Silexでの新しいサービスプロバイダの作成
私はこのような基本構造を有する:app.php
で、だから、
cache
resources
src
-app.php
-autoload.php
-config.php
-controllers.php
-etc
vendor
-assetic
-Company
-src
-Postback.php <-- The classes I need to load
-silex
-etc
views
web
を:
src/autoload.php
で
use SilexExtension\CompanyPostbackServiceProvider;
$app->register(new CompanyPostbackServiceProvider(), array(
'company.class_path' => __DIR__ . '/../vendor/Company/src'
));
:
silex/vendor/Silex-extensions/src/SilexExtension/CompanyPostbackServiceProvider.php
で
$loader->registerNamespaces(array(
'Symfony' => array(__DIR__.'/../vendor/silex/vendor', __DIR__.'/../vendor'),
'Silex' => __DIR__.'/../vendor/silex/src',
'SilexExtension' => __DIR__.'/../vendor/Silex-extentions/src',
'Assetic' => __DIR__.'/../vendor/assetic/src',
'Company' => __DIR__.'/../vendor/Company/src'
));
:
namespace SilexExtension;
use Silex\Application;
use Silex\ServiceProviderInterface;
class CompanyPostbackServiceProvider implements ServiceProviderInterface
{
public function register(Application $app)
{
if (isset($app['company.class_path']))
{
$app['autoloader']->registerNamespace(
'Company', $app['company.class_path']
);
}
}
}
これはいくつかのバリエーションを試しましたが、controller.phpのPostbackを呼び出すとクラスが見つからず、CompanyPostbackServiceProviderのクラスメソッドを宣言するとSilex \ Applicationに属するレジスタ関数になります。
アイデア?私は何か愚かなことをしていることを知っているが、何らかの理由でそれは単にクリックしていない。
ありがとうございます!