我已经使用 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 函数。
有任何想法吗?我知道我在做一些愚蠢的事情,但由于某种原因它只是没有点击。
谢谢!