わかりましたので、Laravel 3 ( https://github.com/maikeldaloo/Resizer )の Resizer バンドル用に機能する Facade を作成しようとしています。
これまでのところ、私は持っています:
- Reszier バンドルのコードを使用して「Resizer.php」ファイルを作成し、名前空間 BARThompson\Planesaleing を追加しました。
- 「ResizerFacade.php」を作成しました。その内容はこの投稿の下部に含まれています。
- 「ResizerServiceProvider.php」を作成しました。その内容は、この投稿の下部に含まれています。
- これら 3 つのファイルはすべて app\library\ に保存されます。
'providers' => 配列の下の \app\config\app.php に次のようなオートローダーを追加しました。
'BARThompson\Planesaleing\ResizerServiceProvider',
'aliases' => 配列の下に \app\config\app.php にエイリアスを追加しました。
'Resizer' => 'BARThompson\Planesaleing\Resizer',
composer.json の autoload クラスマップに次のディレクトリを追加しました。
"app/library"
ただし、Web サイトを正常に読み込むことはできますが、Resizer::open を呼び出すと、次のエラーが発生します。
Class 'BARThompson\Planesaleing\Config' not found
名前空間と混同しています。アプリの他の場所では使用していませんが、それらを使用したチュートリアル ( http://fideloper.com/create-facade-laravel-4 ) に従っているため、完全に理解することなく実装で使用しました。
誰が私が間違っているのか説明できますか?
ResizerFacade.php:
<?php
namespace BARThompson\Planesaleing\Facades;
use Illuminate\Support\Facades\Facade;
class Resizer extends Facade {
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor() { return 'resizer'; }
}
ResizerServiceProvider.php:
<?php
namespace BARThompson\Planesaleing;
use Illuminate\Support\ServiceProvider;
class ResizerServiceProvider extends ServiceProvider {
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
// Register 'resizer' instance container to our UnderlyingClass object
$this->app['resizer'] = $this->app->share(function($app)
{
return new BARThompson\Planesaleing\Resizer;
});
}
}