satun14 / browscap-php
php原生get_browser()函数的独立替代品
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
- guzzlehttp/guzzle: ^7.8.0
- league/flysystem: ^3.21.0
- matthiasmullie/scrapbook: ^1.5.1
- monolog/monolog: ^3.5.0
- psr/log: ^2.0.0 || ^3.0.0
- psr/simple-cache: ^2.0.0 || ^3.0.0
- symfony/console: ^6.4.0 || ^7.0.0
- symfony/filesystem: ^6.4.0 || ^7.0.0
Requires (Dev)
- doctrine/coding-standard: ^12.0.0
- mikey179/vfsstream: ^1.6.11
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.10.43
- phpstan/phpstan-beberlei-assert: ^1.1.2
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.15
- phpunit/phpunit: ^10.4.2
Suggests
- ext-curl: to use curl requests to get the ini file
- 7.5.x-dev
- 7.4.x-dev
- 7.4.0
- 7.3.x-dev
- 7.3.0
- 7.2.x-dev
- 7.2.0
- 7.1.x-dev
- 7.1.0
- 7.0.x-dev
- 7.0.0
- 6.2.x-dev
- 6.1.x-dev
- 6.1.0
- 6.0.x-dev
- 6.0.0
- 5.1.x-dev
- 5.1.0
- 5.0.x-dev
- 5.0.0
- 4.3.x-dev
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.1.0
- 3.0.0
- 3.0.0-rc.1
- 3.0.0-beta.1
- 3.0.0-alpha.1
- 2.x-dev
- 2.1.1
- 2.1.0
- 2.1.0-alpha.1
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-beta
- 1.0.0
- dev-dependabot/composer/phpstan/phpstan-1.12.2
- dev-dependabot/composer/phpstan/extension-installer-1.4.3
This package is auto-updated.
Last update: 2024-09-07 17:14:28 UTC
README
这是PHP原生get_browser()
函数的用户级替代品,由浏览器能力项目官方支持。
注意,您目前查看的是4.x系列。如果您需要不受支持的2.x版本,请在此处阅读该分支的文档here。
安装
运行以下命令通过Composer安装
composer require browscap/browscap-php
然后您可以通过这种方式识别当前用户代理
$cache = new \Roave\DoctrineSimpleCache\SimpleCacheAdapter($doctrineFileCache); // or maybe any other PSR-16 compatible caches $logger = new \Monolog\Logger('name'); // or maybe any other PSR-3 compatible logger $browscap = new \BrowscapPHP\Browscap($cache, $logger); $info = $browscap->getBrowser();
推荐配置
在您开始之前,您必须下载browscap.ini文件并将其转换为缓存。有两种方法。
a. 下载文件,并分两步进行转换。下载的文件将存储在本地文件中,但不会检查远程文件是否已更改。如果您的缓存损坏,您只需要重新运行convert
命令。
vendor/bin/browscap-php browscap:fetch vendor/bin/browscap-php browscap:convert
b. 下载文件,并一步完成转换。下载的文件将不会存储在本地文件中,但会检查远程文件是否已更改。如果您的缓存损坏,您需要清理缓存并重新启动进程。
vendor/bin/browscap-php browscap:update
如果您想自动更新使用的缓存,我们建议使用单独的cron作业来调用上述命令。
4.x版本中的更改
列出的BC不兼容性
- 在整个项目中添加了严格的类型提示。这可能会破坏早期版本中做出的某些类型假设。
CheckUpdateCommand
、ConvertCommand
、LogfileCommand
、ParserCommand
、UpdateCommand
删除了setCache
方法,因此缓存现在必须通过构造函数注入- 许多类现在是
final
- 使用组合而不是继承 PropertyFormatter
现在假定任何非真值都是false
checkUpdate
方法现在在无法确定“远程”版本或缓存中不存在版本时抛出异常- 删除了
log
方法
更改
- 用于缓存Doctrine Cache包
- 可以使用与PSR-16兼容的任何其他缓存
- 对于CLI命令,必须使用详细标志而不是
debug
标志
3.x版本中的更改
更改
- 命名空间已更改为
BrowscapPHP
Browscap
类已分割- 用于缓存WurflCache包
- 用于下载browscap.ini,使用Guzzle HTTP包
已删除的功能
- 自动更新功能已删除
- 所有公共属性都已删除
新功能
- 现在可以使用除了文件缓存之外的其他缓存(有关更多信息,请参阅WurflCache包)
- 现在可以编写自己的格式化程序来更改输出格式
- 现在可以设置PSR-3兼容的记录器
设置示例
将设置更新到4.x版本
这是3.x版本的基设置。
$bc = new \BrowscapPHP\Browscap(); $adapter = new \WurflCache\Adapter\File([\WurflCache\Adapter\File::DIR => $cacheDir]); $bc->setCache($adapter); $logger = new \Monolog\Logger('name'); $bc->setLogger($logger); $result = $bc->getBrowser();
将此修改为4.x版本的基设置,以使用当前缓存目录
$fileCache = new \Doctrine\Common\Cache\FilesystemCache($cacheDir); $cache = new \Roave\DoctrineSimpleCache\SimpleCacheAdapter($fileCache); $logger = new \Monolog\Logger('name'); $bc = new \BrowscapPHP\Browscap($cache, $logger); $result = $bc->getBrowser();
注意:您可以使用任何其他实现了PSR-16接口的缓存。
使用完整的browscap.ini文件
$bc = new \BrowscapPHP\BrowscapUpdater(); $bc->update(\BrowscapPHP\Helper\IniLoaderInterface::PHP_INI_FULL);
设置代理配置
如果您在代理后面或者需要特定的配置,您必须设置一个客户端实例。有关此方面的更多信息,请参阅Guzzle文档。
$proxyConfig = [ 'proxy' => [ 'http' => 'tcp://:8125', 'https' => 'tcp://:8124', ], ]; $client = new \GuzzleHttp\Client($proxyConfig); $bcu = new BrowscapUpdater(); $bcu->setClient($client);
用法示例
从全局$_SERVER变量中获取用户代理
$bc = new \BrowscapPHP\Browscap(); $current_browser = $bc->getBrowser();
使用示例用户代理
$bc = new \BrowscapPHP\Browscap($cache, $logger); $current_browser = $bc->getBrowser($the_user_agent);
CLI命令
注意:如果您不想使用文件缓存,您不能使用CLI命令。目前无法在该处使用其他缓存。注意:每个操作(获取、更新、检查更新)从远程主机browscap.org获取数据时可能会遇到该网站的速率限制。如果发生这种情况,将抛出异常。
每个CLI命令在一切顺利时返回零
。
check-update
如果您只想检查browscap.ini是否有新版本可用,可以使用check-update
命令。
vendor/bin/browscap-php browscap:check-update
选项
cache
(可选)缓存目录的相对路径
返回代码
- 1:没有找到缓存的版本
- 2:没有新版本可用
- 3:检查缓存的版本时发生错误
- 4:获取远程版本时发生错误
- 5:发生其他错误
fetch
fetch
命令从browscap.org下载ini文件。
vendor/bin/browscap-php browscap:fetch
选项
cache
(可选)缓存目录的相对路径remote-file
(可选)如果您不想下载标准文件,则需要此参数,可能的值有PHP_BrowscapINI
下载标准文件(默认)Lite_PHP_BrowscapINI
下载精简版文件Full_PHP_BrowscapINI
下载完整版文件
file
(可选)远程内容存储的本地文件的相对路径
返回代码
- 3:检查缓存的版本时发生错误
- 9:获取远程数据时发生错误
- 10:发生其他错误
convert
convert
命令读取本地存储的browscap.ini文件,并将内容写入缓存。
vendor/bin/browscap-php browscap:convert
选项
file
(可选)远程内容存储的本地文件的相对路径,这应该与fetch命令中的文件相同cache
(可选)缓存目录的相对路径
返回代码
- 6:缺少要转换的文件名
- 7:要转换的文件不可用或不可读
- 35:读取文件时发生其他错误
update
update
命令从browscap.org下载ini文件,并将内容写入缓存。不创建本地文件。
vendor/bin/browscap-php browscap:update
选项
remote-file
(可选)如果您不想下载标准文件,则需要此参数,可能的值有PHP_BrowscapINI
下载标准文件(默认)Lite_PHP_BrowscapINI
下载精简版文件Full_PHP_BrowscapINI
下载完整版文件
cache
(可选)缓存目录的相对路径
返回代码
- 3:检查缓存的版本时发生错误
- 9:获取远程数据时发生错误
- 10:发生其他错误
parse
parse
命令解析给定的用户代理,并将结果写入控制台。
vendor/bin/browscap-php browscap:parse
选项
user-agent
(必需)要解析的用户代理cache
(可选)缓存目录的相对路径
返回代码
- 11:解析用户代理时发生其他错误
CLI示例
使用完整的browscap.ini文件更新缓存
注意:创建/更新缓存的两种方法都将使用默认的standard
模式文件。如果您想获取更多信息,可以使用remote-file
选项。请使用帮助功能了解此参数。
vendor/bin/browscap-php browscap:update --remote-file Full_PHP_BrowscapINI
更新自定义缓存目录
每个操作(除fetch外)都在项目内的resources
目录中使用缓存。如果您使用composer更新此库,缓存也会被清除。如果您想避免这种情况并想设置自己的缓存文件夹,可以使用cache
选项。如果您这样做,您必须为此路径设置一个缓存实例。
vendor/bin/browscap-php browscap:update --cache ./browscap-cache
问题和功能请求
请在GitHub问题跟踪器https://github.com/browscap/browscap-php/issues上报告您的问题并请求新功能。
请在此处报告错误识别的用户代理和浏览器检测,位置在browscap.ini文件中: https://github.com/browscap/browscap/issues