Laravel 4 では、クラスを適切に拡張して新しい Facade を作成するには、次のことを行う必要があります。
別のクラスに基づいて新しいクラスを作成します。
<?php namespace AntonioRibeiro\UserManagementSystem;
class UMS extends \Cartalyst\Sentry\Sentry {
// For now your UMS class is identical to Sentry, so you must have nothing here, right?
}
クラスをインスタンス化する ServiceProvider を作成します。
<?php namespace AntonioRibeiro\UserManagementSystem;
use Illuminate\Support\ServiceProvider;
class UMSServiceProvider extends ServiceProvider {
protected $defer = true;
public function register()
{
$this->app['ums'] = $this->app->share(function($app)
{
// Once the authentication service has actually been requested by the developer
// we will set a variable in the application indicating such. This helps us
// know that we need to set any queued cookies in the after event later.
$app['sentry.loaded'] = true;
return new UMS(
$app['sentry.user'],
$app['sentry.group'],
$app['sentry.throttle'],
$app['sentry.session'],
$app['sentry.cookie'],
$app['request']->getClientIp()
);
});
}
public function provides()
{
return array('ums');
}
}
ファサードを作成する:
<?php namespace AntonioRibeiro\UserManagementSystem;
use Illuminate\Support\Facades\Facade as IlluminateFacade;
class UMSFacade extends IlluminateFacade {
protected static function getFacadeAccessor() { return 'ums'; }
}
サービス プロバイダーを app/config/app.php のリストに追加します。
'providers' => array(
...
'AntonioRibeiro\UserManagementSystem\UMSServiceProvider',
),
app/config/app.php のエイリアスのリストに Facade を追加します。
'aliases' => array(
...
'UMS' => 'AntonioRibeiro\UserManagementSystem\UMSFacade',
),
自動ロードされたクラスを更新します。
composer du --optimze
そしてそれを使用します:
var_dump( UMS::check() );
var_dump( UMS::getUser() );