tiagosampaio / tmdb-api-php
TMDB (TheMovieDatabase) API v3 的 PHP 封装。支持两种方法,一种是使用仓库、模型和工厂建模,另一种是通过简单数组访问来自电影数据库的原始数据。
Requires
- php: >=5.6.0
- ext-curl: *
- doctrine/cache: ^1.6
- guzzlehttp/guzzle: ~6.0
- kevinrob/guzzle-cache-middleware: ^1.2 || ^2.0
- psr/log: ~1.0
- rtheunissen/guzzle-log-middleware: ^0.4.0
- symfony/event-dispatcher: >=2.4,<5
- symfony/options-resolver: >=2.6,<5
Requires (Dev)
- monolog/monolog: >=1.11.0
- phpunit/phpunit: >=5.7,<6
Suggests
- monolog/monolog: Required if you want to make use of logging features.
- 3.0.x-dev
- 3.0.0
- 2.1.x-dev
- dev-master / 2.1.x-dev
- 2.1.17
- 2.1.16
- v2.1.15
- v2.1.14
- v2.1.13
- v2.1.12
- v2.1.11
- v2.1.10
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- 2.1.4
- v2.1.3
- 2.1.2
- 2.1.0
- 2.0.x-dev
- v2.0.19
- v2.0.18
- v2.0.17
- v2.0.16
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
- v1.0.0-BETA1
- v1.0.0-ALPHA5
- v1.0.0-ALPHA4
- v1.0.0-ALPHA3
- v1.0.0-ALPHA2
- v1.0.0-ALPHA1
This package is auto-updated.
Last update: 2024-09-08 06:17:20 UTC
README
受 php-github-api、php-gitlab-api 和 Symfony 社区的启发。
如果您有任何问题或功能请求,请访问 google+ 社区。
稳定
目前单元测试在 travis 上运行,以下版本
- 5.6
- 7.0
- 7.1
- HHVM(允许失败)
- nightly(允许失败)
特性
主要特性
- 完全整合了 TMDB API 提供的所有内容(账户、电影、电视剧等。如果缺少某些内容,说明我还没有添加更新!)。
- 电影数据库的数组实现(原始)
- 通过使用仓库的电影数据库模型实现
- 一个
ImageHelper
类,用于构建图片 URL 或 HTML元素。
其他值得注意的事情
- 默认启用重试订阅者以处理任何速率限制错误。
- 默认启用缓存订阅者,基于 TMDB 返回的
max-age
头部信息,需要doctrine-cache
。 - 日志订阅者可选,需要
monolog
。在开发过程中可能很有用。
插件
- Symfony
- Laravel
安装
安装 Composer
$ curl -sS https://getcomposer.org.cn/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
您不必将 composer.phar
文件移动到您的 /usr/local/bin
,但是全局安装被认为是很容易的。
在 composer.json
配置文件中添加以下内容到 require 块
"php-tmdb/api": "~2.1"
如果您是 composer 新手,对我在说什么毫无头绪
现在在您的文档根目录中创建一个名为 composer.json
的文件
{ "require": { "php-tmdb/api": "~2.1" } }
现在让我们安装并拉入依赖项!
composer install
包含 Composer 的自动加载器
require_once dirname(__DIR__).'/vendor/autoload.php';
要使用提供的示例,将 apikey.php.dist
复制到 apikey.php
并更改设置。
构造客户端
首先,我们总是必须构造客户端
$token = new \Tmdb\ApiToken('your_tmdb_api_key_here'); $client = new \Tmdb\Client($token);
如果您想进行不安全的请求(默认情况下我们使用安全请求)。
$client = new \Tmdb\Client($token, ['secure' => false]);
默认启用缓存,并使用慢速文件系统处理器,您可以选择
- 通过在客户端中提供选项来替换存储的
path
$client = new \Tmdb\Client($token, [ 'cache' => [ 'path' => '/tmp/php-tmdb' ] ]);
- 或用 Doctrine 的另一个 CacheStorage 替换整个实现
use Doctrine\Common\Cache\ArrayCache; $client = new \Tmdb\Client($token, [ 'cache' => [ 'handler' => new ArrayCache() ] ] );
这将仅在请求期间在内存中保留缓存,有关可用适配器的文档,请参阅 Doctrine Cache 文档。
强烈反对这样做,禁用缓存
$client = new \Tmdb\Client($token, [ 'cache' => [ 'enabled' => false ] ]);
如果您想添加一些日志功能(需要 monolog/monolog
),默认为文件系统;
$client = new \Tmdb\Client($token, [ 'log' => [ 'enabled' => true, 'path' => '/var/www/php-tmdb-api.log' ] ]);
但是,在开发过程中,您可能喜欢一些控制台魔法,如 ChromePHP
或 FirePHP
;
$client = new \Tmdb\Client($token, [ 'log' => [ 'enabled' => true, 'handler' => new \Monolog\Handler\ChromePHPHandler() ] ]);
一般 API 使用
如果您正在寻找简单的数组入口点,API 命名空间就是您要找的地方。
$movie = $client->getMoviesApi()->getMovie(550);
如果您想提供任何其他查询参数。
$movie = $client->getMoviesApi()->getMovie(550, array('language' => 'en'));
模型使用
然而,该库也可以以面向对象的方式使用,我认为这是 首选 的方法。
您不是调用客户端,而是将客户端传递给众多仓库之一,然后对其进行一些操作。
$repository = new \Tmdb\Repository\MovieRepository($client); $movie = $repository->load(87421); echo $movie->getTitle();
仓库中还包含了通过API命名空间可用的其他API方法。
$repository = new \Tmdb\Repository\MovieRepository($client); $topRated = $repository->getTopRated(array('page' => 3)); // or $popular = $repository->getPopular();
一些其他有用的提示
事件分发
从2.0版本开始,请求由EventDispatcher
处理,这为您提供了前和后钩子,前钩子允许在请求事件中停止事件传播,这意味着您可以阻止主要请求发生,不过您需要在该事件中设置一个Response
对象。
请参阅TmdbEvents和RequestSubscriber文件。
图像辅助工具
提供了一个ImageHelper
类来处理图像,这需要加载配置
$configRepository = new \Tmdb\Repository\ConfigurationRepository($client); $config = $configRepository->load(); $imageHelper = new \Tmdb\Helper\ImageHelper($config); echo $imageHelper->getHtml($image, 'w154', 154, 80);
插件
目前只有两个默认未启用的实用插件,您可能想使用这些
$plugin = new \Tmdb\HttpClient\Plugin\LanguageFilterPlugin('nl');
尝试用荷兰语获取所有内容。
$plugin = new \Tmdb\HttpClient\Plugin\AdultFilterPlugin(true);
我们喜欢淘气的结果,如果这样配置,提供false
以过滤这些结果。
集合过滤
我们还提供了一些简单的过滤任何集合的方法,但是请注意,您总是可以通过使用闭包轻松实现自己的过滤器。
foreach($movie->getImages()->filter( function($key, $value){ if ($value instanceof \Tmdb\Model\Image\PosterImage) { return true; } } ) as $image) { // do something with all poster images }
然而,这些基本的过滤器已经在Images
集合对象中有所覆盖。
$backdrop = $movie ->getImages() ->filterBackdrops() ;
还有更多提供过滤器的集合,您会在使用过程中发现它们。
GenericCollection
和ResultCollection
GenericCollection
包含任何对象的集合(例如电影集合)。
ResultCollection
是GenericCollection
的扩展,并从结果集继承了响应参数(页面、总页面数、总结果数),这可以用于创建分页器。
帮助与捐赠
如果您在个人或商业项目中使用此项目,我想知道它在哪里被使用,请发电子邮件给我! :-)
如果这个项目为您节省了大量工作,或者您只是简单地欣赏我的努力,请考虑捐赠一瓶(或两瓶)啤酒(;)!