acasademont / wurfl
WURFL 库的 composer 版本
Requires
- php: >=5.3
Requires (Dev)
- phpunit/phpunit: ~4.5
This package is not auto-updated.
Last update: 2024-09-14 17:26:46 UTC
README
LICENSE
本程序是自由软件:您可以自由分发和/或修改它,只要遵守由自由软件基金会发布的GNU Affero通用公共许可证的条款,许可证版本为3或(根据您的选择)任何后续版本。
请参阅此软件包中分发的COPYING文件,以获取适用GNU Affero通用公共许可证的完整文本。
如果您无法遵守AGPL许可证的条款,ScientiaMobile,Inc提供商业许可证,详情请访问 http://www.ScientiaMobile.com/
入门指南
从wurfl网站下载发布归档并解压到适合您应用程序的目录中。
要开始使用API,您需要设置一些配置选项。
重要:WURFL API与WURFL.XML文件紧密相关。WURFL.XML的新版本默认情况下与旧版本的API兼容,但反之则不成立。旧版本的WURFL.XML不保证与新版本的API兼容。让我们重申一下:此API不兼容旧版本的WURFL.XML。此分布中包含可以与此API一起使用的WURFL的最旧版本。
对于有耐心的人
请查看examples/demo/目录中的配置文件示例。
$wurflDir = dirname(__FILE__) . '/../../../WURFL'; $resourcesDir = dirname(__FILE__) . '/../../resources'; require_once $wurflDir.'/Application.php'; $persistenceDir = $resourcesDir.'/storage/persistence'; $cacheDir = $resourcesDir.'/storage/cache'; // Create WURFL Configuration $wurflConfig = new WURFL_Configuration_InMemoryConfig(); // Set location of the WURFL File $wurflConfig->wurflFile($resourcesDir.'/wurfl.zip'); // Set the match mode for the API ('performance' or 'accuracy') $wurflConfig->matchMode('performance'); // Setup WURFL Persistence $wurflConfig->persistence('file', array('dir' => $persistenceDir)); // Setup Caching $wurflConfig->cache('file', array('dir' => $cacheDir, 'expiration' => 36000)); // Create a WURFL Manager Factory from the WURFL Configuration $wurflManagerFactory = new WURFL_WURFLManagerFactory($wurflConfig); // Create a WURFL Manager /* @var $wurflManager WURFL_WURFLManager */ $wurflManager = $wurflManagerFactory->create();
现在您可以开始使用一些 WURFL_WURFLManager
类方法;
$device = $wurflManager->getDeviceForHttpRequest($_SERVER); $device->getCapability("is_wireless_device"); $device->getVirtualCapability("is_smartphone");
创建一个配置对象
-
设置主WURFL文件的位置路径(如果启用了zip扩展,您可以使用zip文件)
-
通过指定提供者和初始化提供者所需的额外参数来配置持久性提供者。API支持以下机制
- Memcache (http://uk2.php.net/memcache)
- APC(替代PHP缓存 https://php.ac.cn/apc)
- MySQL
- 内存
- 文件
-
通过指定提供者和初始化提供者所需的额外参数来配置缓存提供者。API支持以下缓存机制
- Memcache (http://uk2.php.net/memcache)
- APC(替代PHP缓存 https://php.ac.cn/apc)
- 文件
- 空(不缓存)
示例配置
// Create WURFL Configuration $wurflConfig = new WURFL_Configuration_InMemoryConfig(); // Set location of the WURFL File $wurflConfig->wurflFile($resourcesDir.'/wurfl.zip'); // Set the match mode for the API ('performance' or 'accuracy') $wurflConfig->matchMode('performance'); // Setup WURFL Persistence $wurflConfig->persistence('file', array('dir' => $persistenceDir)); // Setup Caching $wurflConfig->cache('file', array('dir' => $cacheDir, 'expiration' => 36000));
使用WURFL PHP API
获取设备
您有四种方法来检索设备
-
getDeviceForRequest(WURFL_Request_GenericRequest $request)
其中 WURFL_Request_GenericRequest 是一个对象,封装了设备的 userAgent、ua-profile、对 xhtml 的支持。 -
getDeviceForHttpRequest($_SERVER)
您通常会使用此方法,API将为您创建 WURFL_Request_GenericRequest 对象。 -
getDeviceForUserAgent(string $userAgent)
用于针对给定的 userAgent 字符串查询API。 -
getDevice(string $deviceID)
通过设备 ID 获取设备(例如:apple_iphone_ver1
)。
使用示例
$device = $wurflManager->getDeviceForHttpRequest($_SERVER);
获取设备属性及其功能
设备 ID 和回退设备 ID 是设备的属性
$deviceID = $device->id; $fallBack = $device->fallBack;
要获取功能值,请使用 getCapability()
$value = $device->getCapability("is_tablet"); $allCaps = $device->getAllCapabilities();
要获取虚拟功能值,请使用 getVirtualCapability()
$value = $device->getVirtualCapability("is_smartphone"); $allVCaps = $device->getAllVirtualCapabilities();
有用的方法
根 WURFL 设备对象有一些有用的功能
/* @var $device WURFL_CustomDevice */ $device = $wurflManager->getDeviceForHttpRequest($_SERVER); /* @var $root WURFL_Xml_ModelDevice */ $root = $device->getRootDevice(); $group_names = $root->getGroupNames(); $cap_names = $root->getCapNames(); $defined = $root->isCapabilityDefined("foobar");
WURFL 重载
WURFL 可以通过检查 WURFL 文件的修改时间来自动更新持久化数据,而无需任何配置。要启用此功能,请在配置中将 allow-reload 设置为 true。
$wurflConfig->allowReload(true);
如果您有任何疑问,请参阅http://wurfl.sourceforge.net上的文档,以及http://www.scientiamobile.com/forum上的 ScientiaMobile 支持论坛。