hisorange/browser-detect
Composer 安装命令:
composer require hisorange/browser-detect
包简介
Browser & Mobile detection package for Laravel.
README 文档
README
Browser Detection v5.0 by hisorange
Easy to use package to identify the visitor's browser details and device type. Magic is not involved the results are generated by multiple well tested and developed packages.
Supports every Laravel version between 4.0 » 10.x; Also tested on every PHP version between 5.6 » 8.2.
How to install
composer require hisorange/browser-detect
Yep, it's ready to be used by You! ^.^
How to use
In Your code just call the Browser facade:
use Browser; // Determine the user's device type is simple as this: $isMobile = Browser::isMobile(); Browser::isTablet(); Browser::isDesktop(); if (Browser::isMobile()) { // Redirect to the mobile version of the site. } // Every wondered if it is a bot who loading Your page? if (Browser::isBot()) { echo 'No need to wonder anymore!'; } // Check for common vendors. if (Browser::isFirefox() || Browser::isOpera()) { $response .= '<script src="firefox-fix.js"></script>'; } // Sometimes You may want to serve different content based on the OS. if (Browser::isAndroid()) { $response .= '<a>Install our Android App!</a>'; } elseif (Browser::isMac() && Browser::isMobile()) { $response .= '<a>Install our iOS App!</a>'; }
Even in Your blade templates:
@mobile <p>This is the MOBILE template!</p> @include('your-mobile-template') @endmobile @tablet <p>This is the TABLET template!</p> <link rel="stylesheet" href="tablet.css" title="Reduce the page size, load what the user need"> @endtablet @desktop <p>This is the DESKTOP template!</p> @enddesktop {-- Every result key is supported --} @browser('isBot') <p>Bots are identified too :)</p> @endbrowser
Easy peasy, ain't it?
Version support
The following matrix has been continuously tested by the great and awesome GitHub Actions!
| ----- | Browser Detect 1.x | Browser Detect 2.x | Browser Detect 3.x | Browser Detect 4.x | Browser Detect 5.x |
|---|---|---|---|---|---|
| Laravel 4.x | ✓ | ✓ | - | - | - |
| Laravel 5.x | - | ✓ | ✓ | - | - |
| Laravel 6.x | - | - | - | ✓ | - |
| Laravel 7.x | - | - | - | ✓ | - |
| Laravel 8.x | - | - | - | 4.4+ | - |
| Laravel 9.x | - | - | - | 4.4+ | ✓ |
| Laravel 10.x | - | - | - | - | ✓ |
| Standalone | - | - | - | 4.2+ | ✓ |
Since 2013 the package runs tests on every possible PHP / Laravel version matrix.
Standalone mode, without Laravel!
Based on community requests; Now You can use the library without Laravel. Just simply use the Parser class as a static object.
use hisorange\BrowserDetect\Parser as Browser; if (Browser::isLinux()) { // Works as well! }
Available API calls
Every call on the Browser facade is proxied to a result object, so the following information are available on Your result too, where You can use the [array] syntax to access them.
| Call | Response | Internal Type |
|---|---|---|
| Browser::userAgent() | Current visitor's HTTP_USER_AGENT string. | (string) |
| Browser::isMobile() | Is this a mobile device. | (boolean) |
| Browser::isTablet() | Is this a tablet device. | (boolean) |
| Browser::isDesktop() | Is this a desktop computer. | (boolean) |
| Browser::isBot() | Is this a crawler / bot. | (boolean) |
| Browser::deviceType() | Enumerated response for [Mobile, Tablet, Desktop, and Bot] | (string) |
| Browser related functions | ||
| Browser::browserName() | Browser's human friendly name like Firefox 3.6, Chrome 42. | (string) |
| Browser::browserFamily() | Browser's vendor like Chrome, Firefox, Opera. | (string) |
| Browser::browserVersion() | Browser's human friendly version string. | (string) |
| Browser::browserVersionMajor() | Browser's semantic major version. | (integer) |
| Browser::browserVersionMinor() | Browser's semantic minor version. | (integer) |
| Browser::browserVersionPatch() | Browser's semantic patch version. | (integer) |
| Browser::browserEngine() | Browser's engine like: Blink, WebKit, Gecko. | (string) |
| Operating system related functions | ||
| Browser::platformName() | Operating system's human friendly name like Windows XP, Mac 10. | (string) |
| Browser::platformFamily() | Operating system's vendor like Linux, Windows, Mac. | (string) |
| Browser::platformVersion() | Operating system's human friendly version like XP, Vista, 10. | (integer) |
| Browser::platformVersionMajor() | Operating system's semantic major version. | (integer) |
| Browser::platformVersionMinor() | Operating system's semantic minor version. | (integer) |
| Browser::platformVersionPatch() | Operating system's semantic patch version. | (integer) |
| Operating system extended functions | ||
| Browser::isWindows() | Is this a windows operating system. | (boolean) |
| Browser::isLinux() | Is this a linux based operating system. | (boolean) |
| Browser::isMac() | Is this an iOS or Mac based operating system. | (boolean) |
| Browser::isAndroid() | Is this an Android operating system. | (boolean) |
| Device related functions | ||
| Browser::deviceFamily() | Device's vendor like Samsung, Apple, Huawei. | (string) |
| Browser::deviceModel() | Device's brand name like iPad, iPhone, Nexus. | (string) |
| Browser vendor related functions | ||
| Browser::isChrome() | Is this a chrome browser. | (boolean) |
| Browser::isFirefox() | Is this a firefox browser. | (boolean) |
| Browser::isOpera() | Is this an opera browser. | (boolean) |
| Browser::isSafari() | Is this a safari browser. | (boolean) |
| Browser::isIE() | Checks if the browser is an some kind of Internet Explorer (or Trident) | (boolean) |
| Browser::isIEVersion() | Compares to a given IE version | (boolean) |
| Browser::isEdge() | Is this a microsoft edge browser. | (boolean) |
| Miscellaneous | ||
| Browser::isInApp() | Check for browsers rendered inside applications like android webview. | (boolean) |
Configuration, personalization
If You are using Laravel then after installation run the following command:
# Will copy a config file to ~/app/config/browser-detect.php
php artisan vendor:publish
For standalone mode to apply Your custom configuration:
use hisorange\BrowserDetect\Parser; $browser = new Parser(null, null, [ 'cache' => [ 'interval' => 86400 // This will override the default configuration. ] ]); $result = $browser->detect();
Since the package aims to be easy to use, there is not much to configure. But You can customize the cache and security values.
Advanced Usage Information
The code is designed to be an easy to use style, so every call You make on the Browser facade will access the result object and get the data for You, but You can parse agents other than the current user's.
// When You call the detect function You will get a result object, from the current user's agent. $result = Browser::detect(); // If You wanna get browser details from a user agent other than the current user call the parse function. $result = Browser::parse('Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14');
Worthy notion! The parser only parsing each user agent string once and then caches it, it uses an in-memory runtime cache for multiple calls in a single page load; And it will use the application's cache to persist the result for a week or so, this should provide You with a sufficient caching mechanism so the detection will cost less than 0.02 millisecond, this was tested with an 80,000 fake visit.
Changelog
See the detailed changes in the CHANGELOG file.
hisorange/browser-detect 适用场景与选型建议
hisorange/browser-detect 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10.97M 次下载、GitHub Stars 达 1.14k, 最近一次更新时间为 2013 年 12 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「browser」 「user agent」 「detect」 「mobile」 「user-agent」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 hisorange/browser-detect 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hisorange/browser-detect 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 hisorange/browser-detect 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Give your JS App some Backbone with Models, Views, Collections, and Events.
Instrument headless chrome/chromium instances from php5.6
Selenium4 (WebDriver) driver for Mink framework
Custom laravel monolog logger for datadog logs management, both api and agent ways
The Message Submission Agent Diagnostics tool (msadiag) facilitates testing the compatibility of third party message submission agents.
Clusteer is a Puppeteer wrapper written for PHP, with the super-power of parallelizing pages across multiple browser instances.
统计信息
- 总下载量: 10.97M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1159
- 点击次数: 25
- 依赖项目数: 60
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2013-12-06
