Laravel を使ったことのある生徒は、Facades の威力をよく知っています。一緒に Facades インスタンスを作成しましょう。何か間違っている点がございましたら、お気軽にご指摘ください。
1. Laravelの自動ロード機能を実装する
まず、ディレクトリ app/lib/Myapp を作成し、次にそのディレクトリをcomposer.json に追加します
<span>1</span> "autoload":<span> { </span><span>2</span> "psr-0":<span>{ </span><span>3</span> "Myapp":"app/lib" <span>4</span> <span> } </span><span>5</span> }
2. 関数クラスの実装
実装クラス app/lib/Myapp/Test.php
<span> 1</span> <?<span>php </span><span> 2</span> <span>/*</span><span>* </span><span> 3</span> <span> * @author brudeke </span><span> 4</span> <span>*/</span> <span> 5</span> <span>namespace Myapp; </span><span> 6</span> <span>class</span><span> Test{ </span><span> 7</span> <span>public</span> <span>function</span> <span>do</span><span>(){ </span><span> 8</span> <span>echo</span> 'this is a class'<span>; </span><span> 9</span> <span> } </span><span>10</span> }
3. ServiceProvider の実装
app/lib/Myapp/TestServiceProvider.php を実装するこのクラスは、主に関数クラスを Ioc コンテナーに追加します:
<?<span>php </span><span>/*</span><span>* * @author brudeke </span><span>*/</span><span> namespace Myapp; </span><span>use</span><span> Illuminate\Support\ServiceProvider; </span><span>class</span> TestServiceProvider <span>extends</span><span> ServiceProvider{ </span><span>public</span> <span>function</span><span> register() { </span><span>$this</span>->app['test'] = <span>$this</span>->app-><span>share( </span><span>function</span> (<span>$app</span><span>) { </span><span>return</span> <span>new</span><span> \Myapp\Test(); }); } }</span>
4. Facade インスタンスの実装
このクラスの主な美化である app/lib/Myapp/Facades/TestFacades.php を実装し、静的メソッドと同様のメンバー関数の呼び出し形式を実現します
<span> 1</span> <?<span>php </span><span> 2</span> <span>/*</span><span>* </span><span> 3</span> <span> * @author brudeke </span><span> 4</span> <span>*/</span> <span> 5</span> <span>namespace Myapp\Facades; </span><span> 6</span> <span> 7</span> <span>use</span><span> Illuminate\Support\Facades\Facade; </span><span> 8</span> <span> 9</span> <span>class</span> TestFacades <span>extends</span><span> Facade{ </span><span>10</span> <span>protected</span> <span>static</span> <span>function</span><span> getFacadeAccessor() </span><span>11</span> <span> { </span><span>12</span> <span>return</span> 'test'<span>; </span><span>13</span> <span> } </span><span>14</span> }
5. ServiceProvider のロード
次の構成を app/config/app.php のプロバイダーに追加します:
<span>1</span> 'providers' => <span>array</span><span>( </span><span>2</span> 'Myapp\TestServiceProvider' <span>3</span> ),
app/config/app.php の aliases にエイリアスを追加します:
<span>1</span> 'aliases' => <span>array</span><span>( </span><span>2</span> 'TestClass' => 'Myapp\Facades\TestFacades', <span>3</span> ),
次に、この関数クラスを TestClass::do() の形式でプロジェクト内で使用できます。