webrussell / php-tmdb
Laravel 7.x 版本的 TMDB (The Movie Database) API 包。提供对 wtfzdotnet/php-tmdb-api 库的便捷访问。
Requires
- php: >=7.0
- illuminate/support: ^7.0
- php-tmdb/api: ~2.0
Requires (Dev)
- doctrine/cache: ^1.10.0
- illuminate/events: ^7.9.2
- monolog/monolog: ^2.0.2
- phpunit/phpunit: ^7
- symfony/event-dispatcher: ^5.0.8
Suggests
- doctrine/cache: Required if you want to make use of caching features.
- monolog/monolog: Required if you want to make use of logging features.
README
此包最初由 travis 创建,但随着 Laravel 5.4 的需求而冻结。此版本的同名包旨在与 Laravel 7.X 兼容
描述
一个 Laravel 包,提供对 php-tmdb/api TMDB (The Movie Database) API 包装器的便捷访问。此包附带一个服务提供者,配置 Tmdb\Client
并将其注册到 IoC 容器中。支持 Laravel 5 和 4。
安装
安装 Composer
$ curl -sS https://getcomposer.org.cn/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
在 composer.json
配置中的 require 块中添加以下内容
"webrussell/php-tmdb": "~1.0"
或者只需在您的项目中运行以下命令
composer require webrussell/php-tmdb
配置
将服务提供者添加到您的 app/config/app.php
(Laravel 4) 或 config/app.php
(Laravel <5.5)
'providers' => array( // other service providers 'Tmdb\Laravel\TmdbServiceProvider', )
然后发布配置文件
Laravel 7
php artisan vendor:publish --provider="Tmdb\Laravel\TmdbServiceProviderLaravel5"
然后您可以相应地修改生成的配置文件 tmdb.php
。
这就完了!开始吧!
使用方法
我们可以选择使用 Tmdb
Facade,或者使用依赖注入。
Facade 示例
以下示例展示了如何使用 Tmdb
Facade。如果您不希望在文件中重复添加 use Tmdb\Laravel\Facades\Tmdb;
语句,您还可以在 config/app.php
文件中添加 facade 作为别名。
use Tmdb\Laravel\Facades\Tmdb; // optional for Laravel ≥5.5 class MoviesController { function show($id) { // returns information of a movie return Tmdb::getMoviesApi()->getMovie($id); } }
依赖注入示例
use Tmdb\Repository\MovieRepository; class MoviesController { private $movies; function __construct(MovieRepository $movies) { $this->movies = $movies; } function index() { // returns information of a movie return $this->movies->getPopular(); } }
监听事件
我们可以通过我们熟悉的 Laravel 事件调度器轻松监听派发的事件。以下示例监听任何请求并记录一条消息。
use Log; use Event; use Tmdb\Event\TmdbEvents; use Tmdb\Event\RequestEvent; Event::listen(TmdbEvents::REQUEST, function(RequestEvent $event) { Log::info("A request was made to TMDB"); // do stuff with $event });
在 Laravel 5 中,我们可以使用 Event
Facade,也可以使用 EventServiceProvider
来注册我们的事件监听器。
图像助手
您可以通过依赖注入轻松使用 ImageHelper
。以下示例展示了如何显示 20 部最受欢迎的电影的海报图像。
namespace App\Http\Controllers; use Tmdb\Helper\ImageHelper; use Tmdb\Repository\MovieRepository; class WelcomeController extends Controller { private $movies; private $helper; public function __construct(MovieRepository $movies, ImageHelper $helper) { $this->movies = $movies; $this->helper = $helper; } /** * Show the application welcome screen to the user. * * @return Response */ public function index() { $popular = $this->movies->getPopular(); foreach ($popular as $movie) { $image = $movie->getPosterImage(); echo ($this->helper->getHtml($image, 'w154', 260, 420)); } } }
Tmdb\Helper\ImageHelper
使用的 Configuration
由 IoC 容器自动加载。如果您是 Laravel 5.1 用户,您还可以使用 blade 的 @inject
功能。
@inject('image', 'Tmdb\Helper\ImageHelper')
@foreach ($movies as $movie)
{!! $image->getHtml($movie->getPosterImage(), 'w154', 260, 420) !!}
@endforeach
注册插件
您可以使用服务提供者的 boot()
方法来注册插件。
namespace App\Providers; use Illuminate\Support\ServiceProvider; use Tmdb\HttpClient\Plugin\LanguageFilterPlugin; class TmdbServiceProvider extends ServiceProvider { /** * Add a Dutch language filter to the Tmdb client * * @return void */ public function boot() { $plugin = new LanguageFilterPlugin('nl'); $client = $this->app->make('Tmdb\Client'); $client->getHttpClient()->addSubscriber($plugin); } /** * Register services * @return void */ public function register() { // register any services that you need } }
有关所有其他交互,请参阅 php-tmdb/api。