Home >Backend Development >PHP Tutorial >Supercharge Your Symfony App with Smart Device Detection: Meet EprofosUserAgentAnalyzerBundle
Have you ever struggled with delivering the right experience to users across different devices? In an era where users switch between phones, tablets, and desktops seamlessly, detecting devices accurately can be a major headache. That's where EprofosUserAgentAnalyzerBundle comes in.
Unlike traditional user agent parsers, EprofosUserAgentAnalyzerBundle offers:
composer require eprofos/user-agent-analyzer
That's it! The bundle auto-configures itself in your Symfony application.
Transform this complex detection:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false) { // Is it really mobile? What about tablets? // What about desktop mode on mobile? }
Into this elegant solution:
{% if is_mobile() %} <div class="mobile-view"> {{ include('components/mobile_navigation.html.twig') }} </div> {% endif %}
use Eprofos\UserAgentAnalyzerBundle\Service\UserAgentAnalyzer; class ResponsiveController { public function index(UserAgentAnalyzer $analyzer) { $result = $analyzer->analyzeCurrentRequest(); // Rich device information $deviceInfo = [ 'type' => $result->getDeviceType(), 'os' => [ 'name' => $result->getOsName(), 'version' => $result->getOsVersion(), 'is64bit' => $result->is64BitsMode() ], 'browser' => [ 'name' => $result->getBrowserName(), 'version' => $result->getBrowserVersion(), 'isWebview' => $result->isBrowserAndroidWebview() || $result->isBrowserIosWebview() ] ]; // Use this information to: // 1. Optimize content delivery // 2. Enable platform-specific features // 3. Track usage analytics } }
{# Optimize product gallery based on device #} {% if is_mobile() %} {# Show swipeable gallery #} {{ include('product/mobile_gallery.html.twig') }} {% elseif is_tablet() %} {# Show touch-optimized grid #} {{ include('product/tablet_gallery.html.twig') }} {% else %} {# Show full desktop experience #} {{ include('product/desktop_gallery.html.twig') }} {% endif %}
{# Enable platform-specific features #} {% if is_android() %} {# Android-specific PWA features #} {{ include('pwa/android_install_prompt.html.twig') }} {% elseif is_ios() %} {# iOS-specific PWA features #} {{ include('pwa/ios_install_prompt.html.twig') }} {% endif %}
use Eprofos\UserAgentAnalyzerBundle\Service\UserAgentAnalyzer; class MediaController { public function serveVideo(UserAgentAnalyzer $analyzer) { $result = $analyzer->analyzeCurrentRequest(); // Optimize video delivery $videoConfig = match(true) { $result->isMobile() => [ 'quality' => 'adaptive', 'preload' => 'metadata', 'format' => 'mp4' ], $result->isTablet() => [ 'quality' => 'high', 'preload' => 'auto', 'format' => 'mp4' ], default => [ 'quality' => 'highest', 'preload' => 'auto', 'format' => 'webm' ] }; return $this->render('video/player.html.twig', [ 'config' => $videoConfig ]); } }
$result = $analyzer->analyzeCurrentRequest(); // Check for specific browser features if ($result->getBrowserChromiumVersion()) { // Enable Chrome-specific features } if ($result->getBrowserWebkitVersion()) { // Enable WebKit-specific features } // Check for desktop mode on mobile if ($result->isBrowserDesktopMode()) { // Adjust layout accordingly }
// Detailed OS information $osInfo = match($result->getOsName()) { 'Windows' => [ 'version' => $result->getOsVersion(), 'family' => $result->getOsFamily(), 'is64bit' => $result->is64BitsMode() ], 'macOS' => [ 'version' => $result->getOsVersion(), 'codename' => $result->getOsCodename(), // e.g., "Monterey" 'architecture' => $result->is64BitsMode() ? 'x64' : 'x86' ], default => [ 'name' => $result->getOsName(), 'version' => $result->getOsVersion() ] };
The bundle is designed with performance in mind:
EPROFOS (École professionnelle de formation spécialisée) is the reference school for specialized training in web, mobile, and software development. We specialize in developing high-quality web solutions and are committed to creating tools that help developers build better applications more efficiently.
composer require eprofos/user-agent-analyzer
Visit our GitHub repository for:
Join us in making web development smarter and more efficient!
The above is the detailed content of Supercharge Your Symfony App with Smart Device Detection: Meet EprofosUserAgentAnalyzerBundle. For more information, please follow other related articles on the PHP Chinese website!