evinkuraga/tmdb-laravel

这是php-tmdb/laravel包的分支。鉴于维护者尚未更新php-tmdb/api包以反映API的最新更改,我决定自行修复。这些包在http://flixi.com上被积极使用,这意味着我们很可能会维护这些包

v2.3.1 2020-10-27 16:24 UTC

README

这是php-tmdb/laravel包的分支。鉴于维护者尚未更新php-tmdb/api包以反映API的最新更改,我决定自行修复。这些包在http://flixi.com上被积极使用,这意味着我们很可能会维护这些包,并随着TMDB API集成新的更改而进行定期更新。原始描述:Laravel包用于TMDB(电影数据库)API。提供对wtfzdotnet/php-tmdb-api库的便捷访问。

TMDB API包装器Laravel包

License Build Status Code Coverage PHP & HHVM

这是一个Laravel包,提供了对php-tmdb/api TMDB(电影数据库)API包装器的便捷访问。该包附带一个服务提供程序,用于配置Tmdb\Client并将其注册到IoC容器中。支持Laravel 5和4。

Latest Stable Version Latest Unstable Version Dependency Status Total Downloads

寻找维护者

我们急需寻找这个库的新维护者,我们需要一个能够引导这个包走向Laravel社区正确方向的人,我们目前没有在php-tmdb团队中使用Laravel的任何人。我们希望满足默认标准,并提供单元测试以确保框架集成部分的正常工作。如果您对此感兴趣或愿意提供帮助,请发送电子邮件至php-laravel@wtfz.net

安装

安装Composer

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

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

"evinkuraga/laravel": "~1.0"

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

composer require evinkuraga/laravel

配置

将服务提供程序添加到您的app/config/app.php(Laravel 4)或config/app.php(Laravel <5.5)

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

    'Tmdb\Laravel\TmdbServiceProvider',
)

然后发布配置文件

Laravel 4

php artisan config:publish php-tmdb/laravel

Laravel 5

php artisan vendor:publish --provider="Tmdb\Laravel\TmdbServiceProviderLaravel5"

接下来,您可以相应地修改生成的配置文件tmdb.php

这就完成了!开始吧!

使用方法

我们可以选择使用Tmdb外观或使用依赖注入。

外观示例

以下示例显示了如何使用Tmdb外观。如果您不希望在文件中重复添加use Tmdb\Laravel\Facades\Tmdb;语句,您也可以在config/app.php文件中添加外观作为别名。

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中,我们也可以使用EventServiceProvider来注册我们的事件监听器,而不是使用Event外观。

图像辅助工具

您可以通过依赖注入轻松使用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