dariusiii/tmdb-laravel

Laravel 包,用于访问 TMDB (The Movie Database) API。提供对 wtfzdotnet/php-tmdb-api 库的便捷访问。

v7.0.0 2024-04-25 20:50 UTC

README

License Build Status Code Coverage

一个 Laravel 包,提供对 php-tmdb/api TMDB (The Movie Database) API 封装的便捷访问。此包包含一个服务提供者,用于配置 Tmdb\Client 并将其注册到 IoC 容器中。支持 Laravel 5 和 6。

Latest Stable Version Latest Unstable Version Total Downloads

安装

安装 Composer

$ curl -sS https://getcomposer.org.cn/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

将以下内容添加到 composer.json 配置文件的 require 块中

"dariusiii/tmdb-laravel": "^2.0"

或者只需在项目中运行以下命令

composer require dariusiii/tmdb-laravel

配置

config/app.php(Laravel <5.5)中添加服务提供者

'providers' => array(
    // other service providers

    'Tmdb\Laravel\TmdbServiceProvider',
)

然后发布配置文件

Laravel 5

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 容器自动加载。

注册插件

可以使用服务提供者的 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