我的思路:
自己寫了一個工具類,由於在專案的多個地方都要用到,又不想每次用到都實例化,所以想將這個工具註冊到laravel的Service Container中。但不幸的是出現了一些問題,以下直接貼上程式碼和我自己的思路,還請指教哪裡出現問題? ? ?非常感謝! ! !
第一步:先註冊容器
<code>php artisan make:provider QcloudVideoServiceProvider</code>
程式碼如下:
<code><?php namespace App\Providers; use App\Xiaoteng\QCVod; use Illuminate\Support\ServiceProvider; class QcloudVideoServiceProvider extends ServiceProvider { /** * Indicates if loading of the provider is deferred. * * @var bool */ protected $defer = true; /** * Register the application services. * * @return void */ public function register() { $this->app->singleton('qcloud.vod', function ($app) { $glass = new QCVod(config('QCLOUD_KEY'), config('QCLOUD_SECRET')); return $glass->setRegion('gz'); }); } /** * Get the services provided by the provider. * * @return array */ public function provides() { return ['qcloud.vod']; } } </code>
第二步:註冊Facades
在app目錄下方建立Foundation/Facades/QcloudFacades.php,程式碼如下:
<code><?php namespace App\Foundation\Facades; use Illuminate\Support\Facades\Facade; class QCvodFacades extends Facade { /** * Get the registered name of the component. * * @return string */ protected static function getFacadeAccessor() { return 'qcloud.vod'; } }</code>
第三步:註冊Service
在config/app.php註冊Service Provider 和 Facades
<code>providers => [ //... App\Providers\QcloudVideoServiceProvider::class, ] aliases => [ //... 'QCvod' => App\Foundation\Facades\QCvodFacades::class, ]</code>
第四步:呼叫
<code>dd(ACvod::getRegion());</code>
getRegion()是工具類別中的一個getter方法
問題出現了:
<code>Class qcloud.vod does not exist</code>
非常感謝您耐心看完!非常感謝!
求解?
我的思路:
自己寫了一個工具類,由於在專案的多個地方都要用到,又不想每次用到都實例化,所以想將這個工具註冊到laravel的Service Container中。但不幸的是出現了一些問題,以下直接貼上程式碼和我自己的思路,還請指教哪裡出現問題? ? ?非常感謝! ! !
第一步:先註冊容器
<code>php artisan make:provider QcloudVideoServiceProvider</code>
程式碼如下:
<code><?php namespace App\Providers; use App\Xiaoteng\QCVod; use Illuminate\Support\ServiceProvider; class QcloudVideoServiceProvider extends ServiceProvider { /** * Indicates if loading of the provider is deferred. * * @var bool */ protected $defer = true; /** * Register the application services. * * @return void */ public function register() { $this->app->singleton('qcloud.vod', function ($app) { $glass = new QCVod(config('QCLOUD_KEY'), config('QCLOUD_SECRET')); return $glass->setRegion('gz'); }); } /** * Get the services provided by the provider. * * @return array */ public function provides() { return ['qcloud.vod']; } } </code>
第二步:註冊Facades
在app目錄下方建立Foundation/Facades/QcloudFacades.php,程式碼如下:
<code><?php namespace App\Foundation\Facades; use Illuminate\Support\Facades\Facade; class QCvodFacades extends Facade { /** * Get the registered name of the component. * * @return string */ protected static function getFacadeAccessor() { return 'qcloud.vod'; } }</code>
第三步:註冊Service
在config/app.php註冊Service Provider 和 Facades
<code>providers => [ //... App\Providers\QcloudVideoServiceProvider::class, ] aliases => [ //... 'QCvod' => App\Foundation\Facades\QCvodFacades::class, ]</code>
第四步:呼叫
<code>dd(ACvod::getRegion());</code>
getRegion()是工具類別中的一個getter方法
問題出現了:
<code>Class qcloud.vod does not exist</code>
非常感謝您耐心看完!非常感謝!
求解?
QcloudVideoServiceProvider
處
<code>$this->app->singleton('qcloud.vod', function ($app) { return new QCVod(config('QCLOUD_KEY'), config('QCLOUD_SECRET')); });</code>
應該是這樣了。
暫時沒寫過“服務提供者”和“門面”,感覺是singleton()
這裡要寫全命名空間。
如果只是作為工具類,請參考 laravel 輔助函數
composer dump-autoload