私はしばらくの間Silexを問題なく使用しています。新しいサービスを追加したり、基本的なサイトを作成したりすることができました。残念ながら、新しいサービスを最初から作成することに固執しています...何が間違っているのかよくわからないので、少しずつ考えました。正しい方向は今のところ役に立ちます。
私はこのような基本的な構造を持っています:
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
だから、でapp.php
:
use SilexExtension\CompanyPostbackServiceProvider;
$app->register(new CompanyPostbackServiceProvider(), array(
'company.class_path' => __DIR__ . '/../vendor/Company/src'
));
でsrc/autoload.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'
));
でsilex/vendor/Silex-extensions/src/SilexExtension/CompanyPostbackServiceProvider.php
:
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に属するregister関数だけになります。
何か案は?私は愚かなことをしていることを知っていますが、何らかの理由でそれはクリックされていません。
ありがとう!