aktuelle.kurse/m133/3_Entwicklungsumgebungen/PHP Storm
Harald G. Mueller a63a769c98 muh
2022-02-23 22:44:33 +01:00

605 lines
52 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<!-- Error reporting -->
<script>(function(){
window.reportError = function(msg, file, line, col, err, isUnhandledRejection){};
var prevOnError = window.onerror;
var onError = function(msg, file, line, col, err) {
reportError(msg, file, line, col, err, false);
prevOnError && prevOnError.apply(window, arguments);
return false;
};
window.onerror = onError;
// Setup reporting for unhandled Promise rejection errors
window.addEventListener("unhandledrejection", function(e) {
if (!e.reason) return;
var l = getSrcLocation(e.reason);
reportError(e.reason.message, l.file, l.line, l.col, e.reason, true);
});
// Setup reporting for console.error and console.warn calls
patchConsole('error');
patchConsole('warn');
// Utility functions
function patchConsole(fnName) {
var fn = console[fnName];
console[fnName] = function() {
fn.apply(console, arguments);
var l; try {
throw new Error('_');
} catch (err) {
l = getSrcLocation(err, 1);
}
var msg = 'console.' + fnName + ': ' + Array.prototype.join.call(arguments, ' ');
reportError(msg, l.file, l.line, l.col, undefined, false);
};
}
function getSrcLocation(err, sd) {
var s = err && err.stack;
var l = s && s.split("\n")[1 + (sd|0)];
var r = l && (/^\s*at [^(]*\((.*?):(\d+)(:\d+)?\)$/.exec(l) || /^\s*at (.*?):(\d+)(:\d+)?$/.exec(l));
return r ? {file: r[1], line: r[2], col: r[3]} : {};
}
})();</script>
<!-- Error reporting --> <!-- Google Tag Manager -->
<script>(function() {
// Initialize Tag Manager queue
window.dataLayer = window.dataLayer || [];
window.gtmLoaded = false;
// Setup reporting for errors that occurred before Tag Manager initialized
var prevReportError = window.reportError;
var reportError = function(msg, file, line, col, err, isUnhandledRejection) {
if (!window.gtmLoaded || isUnhandledRejection) {
// Reproduce the behavior of the Tag Manager error handler
window.dataLayer.push(makeEvt(msg, file, line));
}
prevReportError && prevReportError.apply(window, arguments);
};
window.reportError = reportError;
// Utility functions
function makeEvt(msg, file, line) {
return {
event: "gtm.pageError", "gtm.errorMessage": msg,
"gtm.errorUrl": file, "gtm.errorLineNumber": line
};
}
})();</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;j.addEventListener(
'load', function(){window.gtmLoaded=true});f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5P98');</script>
<!-- End Google Tag Manager --> <!-- Sentry -->
<script>
(function() {
window.sentryLoaded = false;
window.errorsForSentry = [];
var prevReportError = window.reportError;
var reportError = function(
msg,
file,
line,
col,
err,
isUnhandledRejection
) {
if (!window.sentryLoaded) {
window.errorsForSentry.push(err);
}
prevReportError && prevReportError.apply(window, arguments);
};
window.reportError = reportError;
})();
</script>
<script>
window.sentryLoad = function() {
var resolveEnvironment = function () {
const href = window.location.href;
if (/^https:\/\/(.+\.)?jetbrains\.com/.test(href)) {
return 'production';
} else if (/^https?:\/\/localhost/.test(href)) {
return 'local-dev';
} else {
return 'staging';
}
};
window.sentryLoaded = true;
Sentry.init({
environment: resolveEnvironment(),
dsn: 'https://1adb2a61713144eda0786e5af50ddc51@o245151.ingest.sentry.io/1423069',
autoSessionTracking: false,
release:
"jetbrainscom@4b8bfca2f7",
beforeSend: function(event) {
Object.keys(event).forEach(function(key) {
var value = event[key];
if (isEmail(value)) {
delete event[key];
}
});
return event;
}
});
Sentry.configureScope(function(scope) {
scope.setTag('page_locale', 'en-us');
scope.setTag('browser.locale', getPageLocale());
scope.setTag('http.urlFull', location.href);
var protocol = location.protocol || '';
//omit `:` from location.protocol string
var protocolString = protocol.substring(0, protocol.length - 1);
scope.setTag('http.protocol', protocolString);
scope.setTag('http.hostname', location.hostname);
var search = location.search || '';
//omit ? from location.search string
var searchString = search.substr(1);
if (searchString !== '') {
scope.setTag('http.query', searchString || '1');
}
var hash = location.hash || '';
//omit # from location.hash string
var hashString = hash.substr(1);
if (hashString !== '') {
scope.setTag('http.fragment', hashString);
}
});
window.errorsForSentry.forEach(Sentry.captureException);
function getPageLocale() {
return (
(navigator.languages && navigator.languages[0]) ||
navigator.language
);
}
function isEmail(value) {
var emailRegex = /[\+\-\_\.a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+\.[a-zA-Z0-9]+/g;
return emailRegex.test(value);
}
};
</script>
<script src="https://browser.sentry-cdn.com/6.10.0/bundle.min.js" crossorigin="anonymous" onload="sentryLoad()" async></script>
<!-- End Sentry -->
<title>Download PhpStorm: Lightning-Smart PHP IDE</title>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, maximum-scale=1">
<link rel="icon" href="/favicon.ico?r=1234" type="image/x-icon"><!-- 48×48 -->
<link rel="icon" href="/icon.svg?r=1234" type="image/svg+xml" sizes="any">
<link rel="apple-touch-icon" href="/apple-touch-icon.png?r=1234" sizes="180x180"><!-- 180×180 -->
<link rel="icon" href="/icon-512.png?r=1234" type="image/png" sizes="512x512">
<link rel="manifest" href="/site.webmanifest">
<meta name="apple-mobile-web-app-title" content="JetBrains">
<meta name="application-name" content="JetBrains">
<meta name="msapplication-TileColor" content="#000000">
<meta name="theme-color" content="#000000">
<link rel="canonical" href="https://www.jetbrains.com/phpstorm/download/"/> <!-- .350-->
<meta name="description" content="Download the latest version of PhpStorm for Windows, macOS or Linux."/>
<link rel="alternate" hreflang="x-default" href="https://www.jetbrains.com/phpstorm/download/" />
<link rel="alternate" hreflang="en" href="https://www.jetbrains.com/phpstorm/download/" />
<link rel="alternate" hreflang="en-CN" href="https://www.jetbrains.com.cn/en-us/phpstorm/download/" />
<link rel="alternate" hreflang="de" href="https://www.jetbrains.com/de-de/phpstorm/download/" />
<link rel="alternate" hreflang="es" href="https://www.jetbrains.com/es-es/phpstorm/download/" />
<link rel="alternate" hreflang="fr" href="https://www.jetbrains.com/fr-fr/phpstorm/download/" />
<link rel="alternate" hreflang="ja" href="https://www.jetbrains.com/ja-jp/phpstorm/download/" />
<link rel="alternate" hreflang="ko" href="https://www.jetbrains.com/ko-kr/phpstorm/download/" />
<link rel="alternate" hreflang="ru" href="https://www.jetbrains.com/ru-ru/phpstorm/download/" />
<link rel="alternate" hreflang="zh-Hans" href="https://www.jetbrains.com/zh-cn/phpstorm/download/" />
<link rel="alternate" hreflang="zh-CN" href="https://www.jetbrains.com.cn/phpstorm/download/" />
<link rel="alternate" hreflang="pt-BR" href="https://www.jetbrains.com/pt-br/phpstorm/download/" />
<script>
default_site_language = 'en-us';
var current_lang = 'en-us';
var i18n_info = {"current_lang": "en-us", "languages": [{"canonical": "en", "code": "en-us", "label": "English", "page_translated": true, "url": "/phpstorm/download/"}, {"canonical": "de", "code": "de-de", "label": "Deutsch", "page_translated": true, "url": "/de-de/phpstorm/download/"}, {"canonical": "es", "code": "es-es", "label": "Espa\u00f1ol", "page_translated": true, "url": "/es-es/phpstorm/download/"}, {"canonical": "fr", "code": "fr-fr", "label": "Fran\u00e7ais", "page_translated": true, "url": "/fr-fr/phpstorm/download/"}, {"canonical": "ja", "code": "ja-jp", "label": "\u65e5\u672c\u8a9e", "page_translated": true, "url": "/ja-jp/phpstorm/download/"}, {"canonical": "ko", "code": "ko-kr", "label": "\ud55c\uad6d\uc5b4", "page_translated": true, "url": "/ko-kr/phpstorm/download/"}, {"canonical": "ru", "code": "ru-ru", "label": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439", "page_translated": true, "url": "/ru-ru/phpstorm/download/"}, {"canonical": "zh-Hans", "code": "zh-cn", "label": "\u7b80\u4f53\u4e2d\u6587", "page_translated": true, "url": "/zh-cn/phpstorm/download/"}, {"canonical": "pt-BR", "code": "pt-br", "label": "Portugu\u00eas do Brasil", "page_translated": true, "url": "/pt-br/phpstorm/download/"}]};
var navigationMenu = {"primary": {"items": [{"title": "Developer Tools", "banners": [{"isActive": false, "title": "Space", "description": "An all-in-one solution for software projects and teams", "logoId": "space", "actionLabel": "Explore Space", "url": "/space/", "bgColor": "#167DFF", "bgGradient": "linear-gradient(117.63deg, rgb(8 89 255) -0.78%, rgb(0 154 231) 55.03%, rgb(221 255 84) 111.19%)", "cleaned_url": "/space/"}, {"isActive": false, "title": "Fleet", "description": "Next-generation IDE by JetBrains", "logoSrc": "/img/banners-menu-main/fleet.svg", "actionLabel": "Learn more", "url": "/fleet/", "bgColor": "#8701C7", "bgGradient": "linear-gradient(130.93deg, #69029A 0%, #8701C7 32.33%, #6B57FF 97.76%)", "cleaned_url": "/fleet/"}], "suggestions": [{"isActive": false, "url": "/products/", "title": "Not sure which tool is best for you?", "description": "Whichever technologies you use, there's a JetBrains tool to match", "actionLabel": "Find your tool", "cleaned_url": "/products/"}], "submenu": {"layout": "auto-fill inline inline inline", "columns": [{"title": "IDEs", "mobileLayout": "forceTwoColumns", "subColumns": [{"items": [{"isActive": false, "title": "AppCode", "url": "/objc/", "logoId": "appcode", "cleaned_url": "/objc/"}, {"isActive": false, "title": "CLion", "url": "/clion/", "logoId": "clion", "cleaned_url": "/clion/"}, {"isActive": false, "title": "DataGrip", "url": "/datagrip/", "logoId": "datagrip", "cleaned_url": "/datagrip/"}, {"isActive": false, "title": "DataSpell", "url": "/dataspell/", "logoId": "dataspell", "cleaned_url": "/dataspell/"}, {"isActive": false, "title": "Fleet", "url": "/fleet/", "logoId": "fleet", "cleaned_url": "/fleet/"}, {"isActive": false, "title": "GoLand", "url": "/go/", "logoId": "goland", "cleaned_url": "/go/"}]}, {"items": [{"isActive": false, "title": "IntelliJ&nbsp;IDEA", "url": "/idea/", "logoId": "intellij-idea", "cleaned_url": "/idea/"}, {"isActive": false, "title": "PhpStorm", "url": "/phpstorm/", "logoId": "phpstorm", "cleaned_url": "/phpstorm/"}, {"isActive": false, "title": "PyCharm", "url": "/pycharm/", "logoId": "pycharm", "cleaned_url": "/pycharm/"}, {"isActive": false, "title": "Rider", "url": "/rider/", "logoId": "rider", "cleaned_url": "/rider/"}, {"isActive": false, "title": "RubyMine", "url": "/ruby/", "logoId": "rubymine", "cleaned_url": "/ruby/"}, {"isActive": false, "title": "WebStorm", "url": "/webstorm/", "logoId": "webstorm", "cleaned_url": "/webstorm/"}]}]}, {"title": "PLUGINS & SERVICES", "mobileLayout": "forceTwoColumns", "items": [{"isActive": false, "title": "All Plugins", "url": "https://plugins.jetbrains.com/", "cleaned_url": "https://plugins.jetbrains.com/"}, {"isActive": false, "title": "IDE Themes", "url": "https://plugins.jetbrains.com/search?tags=Theme", "cleaned_url": "https://plugins.jetbrains.com/search?tags=Theme"}, {"isActive": false, "title": "Big Data Tools", "url": "https://plugins.jetbrains.com/plugin/12494-big-data-tools", "cleaned_url": "https://plugins.jetbrains.com/plugin/12494-big-data-tools"}, {"isActive": false, "title": "Code With Me", "url": "/code-with-me/", "cleaned_url": "/code-with-me/"}, {"isActive": false, "title": "QA Tools", "url": "https://lp.jetbrains.com/qa/", "cleaned_url": "https://lp.jetbrains.com/qa/"}, {"isActive": false, "title": "Rust", "url": "/rust/", "cleaned_url": "/rust/"}, {"isActive": false, "title": "Scala", "url": "https://plugins.jetbrains.com/plugin/1347-scala", "cleaned_url": "https://plugins.jetbrains.com/plugin/1347-scala"}, {"isActive": false, "title": "Toolbox App", "url": "/toolbox-app/", "cleaned_url": "/toolbox-app/"}]}, {"title": ".NET & VISUAL STUDIO", "hasSeparator": true, "items": [{"isActive": false, "title": "Rider", "url": "/rider/", "logoId": "rider", "cleaned_url": "/rider/"}, {"isActive": false, "title": "ReSharper", "url": "/resharper/", "logoId": "resharper", "cleaned_url": "/resharper/"}, {"isActive": false, "title": "ReSharper C++", "url": "/resharper-cpp/", "logoId": "resharper-cpp", "cleaned_url": "/resharper-cpp/"}, {"isActive": false, "title": "dotCover", "url": "/dotcover/", "logoId": "dotcover", "cleaned_url": "/dotcover/"}, {"isActive": false, "title": "dotMemory", "url": "/dotmemory/", "logoId": "dotmemory", "cleaned_url": "/dotmemory/"}, {"isActive": false, "title": "dotPeek", "url": "/decompiler/", "logoId": "dotpeek", "cleaned_url": "/decompiler/"}, {"isActive": false, "title": "dotTrace", "url": "/profiler/", "logoId": "dottrace", "cleaned_url": "/profiler/"}, {"isActive": false, "title": ".NET Tools Plugins", "url": "https://plugins.jetbrains.com/search?isFeaturedSearch=true&products=resharper&products=rider", "cleaned_url": "https://plugins.jetbrains.com/search?isFeaturedSearch=true&products=resharper&products=rider"}]}, {"title": "LANGUAGES & FRAMEWORKS", "hasSeparator": true, "items": [{"isActive": false, "title": "Kotlin", "url": "https://kotlinlang.org/", "cleaned_url": "https://kotlinlang.org/"}, {"isActive": false, "title": "Ktor", "url": "https://ktor.io/", "cleaned_url": "https://ktor.io/"}, {"isActive": false, "title": "MPS", "url": "/mps/", "cleaned_url": "/mps/"}, {"isActive": false, "title": "Compose for Desktop", "url": "/lp/compose/", "cleaned_url": "/lp/compose/"}]}]}}, {"title": "Team Tools", "banners": [{"isActive": false, "title": "Datalore", "description": "Smart Jupyter environment for team collaboration", "logoId": "datalore", "actionLabel": "Learn more", "url": "/datalore/enterprise/", "bgColor": "#005CD1", "bgGradient": "linear-gradient(120.81deg, #003396 11.31%, #009CF4 95.37%)", "cleaned_url": "/datalore/enterprise/"}, {"isActive": false, "title": "YouTrack", "description": "Powerful project management for all your teams", "logoId": "youtrack", "actionLabel": "Learn more", "url": "/youtrack/", "bgColor": "#6B57FF", "bgGradient": "linear-gradient(141.09deg, #D80663 -21.81%, #834CEF 33.98%, #00B5E2 100.21%)", "cleaned_url": "/youtrack/"}], "submenu": {"layout": "8 4", "columns": [{"title": "IN-CLOUD AND ON-PREMISES SOLUTIONS", "subColumns": [{"items": [{"isActive": false, "title": "Datalore", "url": "https://datalore.jetbrains.com/", "description": "The online data science notebook", "cleaned_url": "https://datalore.jetbrains.com/"}, {"isActive": false, "title": "Space", "url": "/space/", "description": "An all-in-one solution for software projects and teams", "cleaned_url": "/space/"}, {"isActive": false, "title": "TeamCity", "url": "/teamcity/", "description": "Powerful Continuous Integration out of the box", "cleaned_url": "/teamcity/"}]}, {"items": [{"isActive": false, "title": "YouTrack", "url": "/youtrack/", "description": "Powerful project management for all your teams", "cleaned_url": "/youtrack/"}, {"isActive": false, "title": "Upsource", "url": "/upsource/", "description": "Code review and project analytics", "cleaned_url": "/upsource/"}, {"isActive": false, "title": "Qodana", "url": "/qodana/", "description": "The code quality platform for your favorite CI", "cleaned_url": "/qodana/"}]}]}, {"title": "EXTENSIONS", "hasSeparator": true, "items": [{"isActive": false, "title": "TeamCity Plugins", "url": "https://plugins.jetbrains.com/teamcity/", "cleaned_url": "https://plugins.jetbrains.com/teamcity/"}, {"isActive": false, "title": "YouTrack Extensions", "url": "https://plugins.jetbrains.com/youtrack/", "cleaned_url": "https://plugins.jetbrains.com/youtrack/"}, {"isActive": false, "title": "JetBrains Hub", "url": "/hub/", "cleaned_url": "/hub/"}]}]}}, {"title": "Learning Tools", "banners": [{"isActive": false, "title": "JetBrains Academy for Organizations", "description": "Empower your institution by cultivating the motivation to learn", "actionLabel": "Discover more", "url": "https://lp.jetbrains.com/academy/for-organizations/", "logoSrc": "/img/banners-menu-main/academy-logo.svg", "bgColor": "#B01DF6", "bgGradient": "linear-gradient(335.07deg, #636CEA 0%, #834CEF 40.63%, #771F89 100%)", "cleaned_url": "https://lp.jetbrains.com/academy/for-organizations/"}], "submenu": {"columns": [{"title": "EDUCATIONAL PRODUCTS", "items": [{"isActive": false, "title": "JetBrains Academy", "url": "/academy/", "description": "A hands-on learning platform integrated with JetBrains IDEs", "cleaned_url": "/academy/"}, {"isActive": false, "title": "PyCharm Edu", "url": "/pycharm-edu/", "description": "A free IDE for learning and teaching programming with Python", "cleaned_url": "/pycharm-edu/"}, {"isActive": false, "title": "IntelliJ IDEA Edu", "url": "/idea-edu/", "description": "A free IDE for learning and teaching programming with Java, Kotlin, and Scala", "cleaned_url": "/idea-edu/"}, {"isActive": false, "title": "EduTools plugin", "url": "https://plugins.jetbrains.com/plugin/10081-edutools", "description": "Adding educational functionality to JetBrains IDEs", "cleaned_url": "https://plugins.jetbrains.com/plugin/10081-edutools"}]}, {"title": "FREE LICENSES", "items": [{"isActive": false, "title": "For Students and Teachers", "url": "/community/education/#students", "description": "JetBrains IDEs for individual academic use", "cleaned_url": "/community/education/#students"}, {"isActive": false, "title": "For Educational Institutions", "url": "/community/education/#classrooms", "description": "JetBrains IDEs and team tools for classrooms", "cleaned_url": "/community/education/#classrooms"}, {"isActive": false, "title": "For Courses and Bootcamps", "url": "/community/education/#courses", "description": "JetBrains IDEs for your students", "cleaned_url": "/community/education/#courses"}]}, {"title": "OPPORTUNITIES", "hasSeparator": true, "items": [{"isActive": false, "title": "Kotlin for Education", "url": "https://kotlinlang.org/education/", "cleaned_url": "https://kotlinlang.org/education/"}, {"isActive": false, "title": "University Relations", "url": "/education/university-relations/", "cleaned_url": "/education/university-relations/"}, {"isActive": false, "title": "Internships", "url": "/careers/internships/", "cleaned_url": "/careers/internships/"}]}]}}, {"title": "Solutions", "banners": [{"isActive": false, "title": "Developer Tools for Your Business", "description": "Professional tools for productive development", "actionLabel": "Learn more", "url": "/store/business/", "logoSrc": "/img/banners-menu-main/containers.svg", "bgColor": "#6B57FF", "bgGradient": "linear-gradient(246.1deg, rgb(0 224 214) 1.67%, rgb(126 27 253) 92.48%)", "cleaned_url": "/store/business/"}, {"isActive": false, "title": "Remote Development", "description": "Connect to remote dev environments from anywhere in seconds", "actionLabel": "Discover more", "url": "/remote-development/", "bgColor": "#2DF388", "bgGradient": "linear-gradient(240.88deg, #2DF388 0%, #05BF87 37.75%, #027474 98.39%)", "cleaned_url": "/remote-development/"}], "submenu": {"layout": "8 4", "columns": [{"title": "BY INDUSTRY & TECHNOLOGY", "layout": "6 6", "subColumns": [{"items": [{"isActive": false, "title": "Remote Development", "url": "/remote-development/", "description": "Tools for remote development for you and your team", "cleaned_url": "/remote-development/"}, {"isActive": false, "title": "Game Development", "url": "/gamedev/", "description": "Tools for game development for any platform", "cleaned_url": "/gamedev/"}, {"isActive": false, "title": "DevOps", "url": "/devops/", "description": "Tools and integrations for any infrastructure", "cleaned_url": "/devops/"}, {"isActive": false, "title": "Quality Assurance", "url": "/quality-assurance-solutions/", "description": "Tools for Quality Assurance and Test Automation", "cleaned_url": "/quality-assurance-solutions/"}]}, {"items": [{"isActive": false, "title": "C++ Tools", "url": "/cpp/", "description": "Tools for C/C++ development for any platform", "cleaned_url": "/cpp/"}, {"isActive": false, "title": "Data Tools", "url": "/data-tools/", "description": "Tools for Big Data and Data Science", "cleaned_url": "/data-tools/"}, {"isActive": false, "title": "Software Development", "url": "/space/solutions/software-teams/", "description": "All-in-one solution for software projects and teams", "cleaned_url": "/space/solutions/software-teams/"}]}]}, {"title": "RECOMMENDED", "hasSeparator": true, "items": [{"isActive": false, "title": "All Products Pack", "url": "/all/", "cleaned_url": "/all/"}, {"isActive": false, "title": ".NET Tools", "url": "/dotnet/", "cleaned_url": "/dotnet/"}, {"isActive": false, "title": "JetBrains for Education", "url": "/education/", "cleaned_url": "/education/"}, {"isActive": false, "title": "All JetBrains Products", "url": "/products/", "cleaned_url": "/products/"}, {"isActive": false, "title": "JetBrains Marketplace", "url": "https://plugins.jetbrains.com/", "cleaned_url": "https://plugins.jetbrains.com/"}]}]}}, {"title": "Support", "banners": [{"isActive": false, "title": "Download and Install", "actionLabel": "Download and Install", "url": "/products/", "logoSrc": "/img/banners-menu-main/download.svg", "bgColor": "#6B57FF", "bgGradient": "linear-gradient(294.91deg, #FF318C -50.1%, #6B57FF 97.43%)", "cleaned_url": "/products/"}, {"isActive": false, "title": "Contact us", "actionLabel": "Contact us", "url": "/company/contacts/", "logoSrc": "/img/banners-menu-main/test-review.svg", "bgColor": "#21D789", "bgGradient": "linear-gradient(283.8deg, #087CFA 5.73%, #21D789 100%)", "cleaned_url": "/company/contacts/"}], "submenu": {"columns": [{"title": "PRODUCT & TECHNICAL SUPPORT", "layout": "12", "subColumns": [{"items": [{"isActive": false, "title": "Support Center", "url": "/support/", "cleaned_url": "/support/"}, {"isActive": false, "title": "Product Documentation", "url": "/help/", "cleaned_url": "/help/"}, {"isActive": false, "title": "Webinars", "url": "/company/events/webinars/", "cleaned_url": "/company/events/webinars/"}, {"isActive": false, "title": "Early Access", "url": "/resources/eap/", "cleaned_url": "/resources/eap/"}, {"isActive": false, "title": "Blog", "url": "https://blog.jetbrains.com/", "cleaned_url": "https://blog.jetbrains.com/"}]}]}, {"title": "FREQUENT TASKS", "hasSeparator": true, "items": [{"isActive": false, "title": "Manage your account", "url": "https://account.jetbrains.com/profile-details", "cleaned_url": "https://account.jetbrains.com/profile-details"}, {"isActive": false, "title": "Manage your licenses", "url": "https://account.jetbrains.com/licenses", "cleaned_url": "https://account.jetbrains.com/licenses"}, {"isActive": false, "title": "Contact Sales", "url": "/support/sales/", "cleaned_url": "/support/sales/"}, {"isActive": false, "title": "Licensing FAQ", "url": "https://sales.jetbrains.com", "cleaned_url": "https://sales.jetbrains.com"}]}]}}, {"title": "Store", "banners": [{"isActive": false, "title": "All Products Pack", "description": "Get all JetBrains desktop tools including 10&nbsp;IDEs,<br />2&nbsp;profilers, and 3&nbsp;extensions", "actionLabel": "Learn more", "url": "/all/", "logoSrc": "/img/banners-menu-main/discount.svg", "bgColor": "#FF318C", "bgGradient": "linear-gradient(293.2deg, rgb(253 13 122) 13.45%, rgb(252 100 67) 73.57%, rgb(248 158 7) 100%)", "cleaned_url": "/all/"}, {"isActive": false, "title": "The Total Economic Impact\u2122 of IntelliJ&nbsp;IDEA study", "description": "Commissioned TEI research conducted by Forrester Consulting", "actionLabel": "Learn more", "url": "/lp/intellijidea-forrester-tei/", "logoId": "intellij-idea", "bgColor": "#6B57FF", "bgGradient": "linear-gradient(304.12deg, #087CFA -14.07%, #353535 109.22%)", "cleaned_url": "/lp/intellijidea-forrester-tei/"}], "submenu": {"columns": [{"title": "DEVELOPER TOOLS", "layout": "12 12 12", "subColumns": [{"items": [{"isActive": false, "title": "For Individual Use", "url": "/store/#personal", "cleaned_url": "/store/#personal"}, {"isActive": false, "title": "For Teams and Organizations", "url": "/store/#commercial", "cleaned_url": "/store/#commercial"}, {"isActive": false, "title": "Special offers & programs", "url": "/store/#discounts", "cleaned_url": "/store/#discounts"}]}, {"title": "SERVICES & PLUGINS", "items": [{"isActive": false, "title": "Code With Me", "url": "/code-with-me/buy", "cleaned_url": "/code-with-me/buy"}, {"isActive": false, "title": "Marketplace", "url": "/store/plugins/", "cleaned_url": "/store/plugins/"}]}, {"title": "LEARNING TOOLS", "items": [{"isActive": false, "title": "JetBrains Academy", "url": "/academy/buy/", "cleaned_url": "/academy/buy/"}]}]}, {"title": "TEAM TOOLS", "items": [{"isActive": false, "title": "Space", "url": "/store/teamware#space-store-section", "cleaned_url": "/store/teamware#space-store-section"}, {"isActive": false, "title": "TeamCity", "url": "/store/teamware#teamcity-store-section", "cleaned_url": "/store/teamware#teamcity-store-section"}, {"isActive": false, "title": "YouTrack", "url": "/store/teamware#youtrack-store-section", "cleaned_url": "/store/teamware#youtrack-store-section"}, {"isActive": false, "title": "Datalore", "url": "https://datalore.jetbrains.com/", "cleaned_url": "https://datalore.jetbrains.com/"}]}, {"title": "SALES SUPPORT", "hasSeparator": true, "items": [{"isActive": false, "title": "Contact Sales", "url": "/support/sales/", "cleaned_url": "/support/sales/"}, {"isActive": false, "title": "Purchase Terms", "url": "/legal/docs/store/terms/", "cleaned_url": "/legal/docs/store/terms/"}, {"isActive": false, "title": "FAQ", "url": "https://sales.jetbrains.com/", "cleaned_url": "https://sales.jetbrains.com/"}, {"isActive": false, "title": "Partners and Resellers", "url": "/company/partners/", "cleaned_url": "/company/partners/"}]}]}}, {"isActive": false, "title": "Login", "url": "https://account.jetbrains.com/", "isMobileOnly": true, "cleaned_url": "https://account.jetbrains.com/"}]}, "secondary": {"isActive": true, "id": "product_phpstorm", "logoId": "phpstorm", "url": "/phpstorm/", "title": "PhpStorm", "items": [{"isActive": false, "title": "Coming in new version", "url": "/phpstorm/nextversion/", "isEapItem": true, "isItemHidden": true, "cleaned_url": "/phpstorm/nextversion/"}, {"isActive": false, "title": "What's New", "version": "2021.3", "url": "/phpstorm/whatsnew/", "items": [{"isActive": false, "title": "What's New 2021.2", "url": "/phpstorm/whatsnew/2021-2/", "cleaned_url": "/phpstorm/whatsnew/2021-2/"}, {"isActive": false, "title": "What's New 2021.1", "url": "/phpstorm/whatsnew/2021-1/", "cleaned_url": "/phpstorm/whatsnew/2021-1/"}, {"isActive": false, "title": "What's New 2020.3", "url": "/phpstorm/whatsnew/2020-3/", "cleaned_url": "/phpstorm/whatsnew/2020-3/"}], "cleaned_url": "/phpstorm/whatsnew/"}, {"isActive": false, "title": "Features", "url": "/phpstorm/features/", "heading": "Features overview", "items": [{"isActive": false, "title": "PHP Code Editor", "url": "/phpstorm/features/php_code_editor.html", "cleaned_url": "/phpstorm/features/php_code_editor.html"}, {"isActive": false, "title": "Debugging, Testing and Profiling", "url": "/phpstorm/features/debugging_testing_profiling.html", "cleaned_url": "/phpstorm/features/debugging_testing_profiling.html"}, {"isActive": false, "title": "HTML/CSS/JavaScript Editor", "url": "/phpstorm/features/html_css_js_editor.html", "cleaned_url": "/phpstorm/features/html_css_js_editor.html"}, {"isActive": false, "title": "Development Environment", "url": "/phpstorm/features/development_environment.html", "cleaned_url": "/phpstorm/features/development_environment.html"}, {"isActive": false, "title": "PHP Frameworks Support", "url": "/phpstorm/features/frameworks-support.html", "cleaned_url": "/phpstorm/features/frameworks-support.html"}], "cleaned_url": "/phpstorm/features/"}, {"isActive": false, "title": "Learn", "url": "/phpstorm/documentation/", "items": [{"isActive": false, "title": "Quick Start Guide", "url": "/phpstorm/documentation/", "cleaned_url": "/phpstorm/documentation/"}, {"isActive": false, "title": "Ultimate Debugging Guide", "url": "/phpstorm/documentation/phpstorm-video-tutorials.jsp", "cleaned_url": "/phpstorm/documentation/phpstorm-video-tutorials.jsp"}], "cleaned_url": "/phpstorm/documentation/"}, {"isActive": false, "title": "Blog & Social", "url": "/phpstorm/social/", "cleaned_url": "/phpstorm/social/"}, {"isActive": false, "title": "Buy", "url": "/phpstorm/buy/", "cleaned_url": "/phpstorm/buy/"}, {"isActive": true, "title": "Download", "url": "/phpstorm/download/", "type": "button", "cleaned_url": "/phpstorm/download/"}], "cleaned_url": "/phpstorm/"}};
var is_layout_adaptive = false;
is_layout_adaptive = true;
var disable_language_picker = false;
var localized_domains = [{"defaultLanguage": "en", "domain": "blog.jetbrains.com", "locales": {"de-de": "de", "en-us": "en", "es-es": "es", "fr-fr": "fr", "ja-jp": "ja", "ko-kr": "ko", "pt-br": "pt-br", "ru-ru": "ru", "zh-cn": "zh-hans"}, "pathsLocalization": false, "suffixDefault": false}];
var english_only_url_prefixes = [];
var is_landing_view = false;
var theme = 'None';
</script>
<script></script>
<link href="/_assets/common.b34eea6f3b333c5995c8.css" rel="stylesheet" type="text/css">
<link href="/_assets/default-page.e57a2ef176c16e8c7cc1.css" rel="stylesheet" type="text/css">
<script src="/_assets/common.0da8e15926b0abcd2e27.js" type="text/javascript"></script>
<script src="/_assets/default-page.4c542c14ea7088c427ac.js" type="text/javascript"></script>
<script src="/_assets/phpstorm/download/index.entry.f823efa0bc374b62a60b.js" type="text/javascript"></script>
<!-- Social Media tag Starts -->
<!-- Open Graph data -->
<meta property="og:title" content="Download PhpStorm: Lightning-Smart PHP IDE"/>
<meta property="og:description" content="Download the latest version of PhpStorm for Windows, macOS or Linux."/>
<meta property="og:image" content="https://resources.jetbrains.com/storage/products/phpstorm/img/meta/preview.png"/>
<meta property="og:site_name" content="JetBrains"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content= https://www.jetbrains.com/phpstorm/download/ />
<!-- OpenGraph End -->
<!-- Schema.org data -->
<script type="application/ld+json">
{"@context": "http://schema.org/", "@type": "Product", "alternateName": "JetBrains PhpStorm", "brand": {"@type": "Brand", "name": "JetBrains"}, "description": "PhpStorm: Lightning-Smart IDE for PHP Programming by JetBrains", "image": "https://resources.jetbrains.com/storage/products/phpstorm/img/meta/preview.png", "logo": "https://resources.jetbrains.com/storage/products/phpstorm/img/meta/phpstorm_logo_300x300.png", "name": "PhpStorm", "offers": {"@type": "AggregateOffer", "highPrice": "19.90", "lowPrice": "8.90", "priceCurrency": "USD"}, "releaseDate": "2021-06-02T09:00", "sameAs": ["https://twitter.com/phpstorm", "http://www.wikidata.org/entity/Q1786113"]}
</script>
<script type="application/ld+json">
{"@context": "http://schema.org", "@type": "SoftwareApplication", "applicationCategory": "DeveloperApplication", "author": {"@type": "Organization", "name": "JetBrains"}, "datePublished": "2021-06-02T09:00", "downloadUrl": "https://www.jetbrains.com/phpstorm/download/", "image": "https://resources.jetbrains.com/storage/products/phpstorm/img/meta/preview.png", "name": "PhpStorm", "operatingSystem": "Windows, macOS, Linux", "publisher": {"@type": "Organization", "name": "JetBrains"}, "requirements": "RAM: 2 GB, Screen Resolution: 1024x768", "screenshot": "https://www.jetbrains.com/phpstorm/img/screenshots/phpstorm_debugging@2x.png", "softwareVersion": "2021.1", "url": "https://www.jetbrains.com/phpstorm/"}
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "https://www.jetbrains.com/phpstorm/download/#webpage",
"url": "https://www.jetbrains.com/phpstorm/download/",
"name": "Download PhpStorm: Lightning-Smart PHP IDE",
"description": "Download the latest version of PhpStorm for Windows, macOS or Linux.",
"image": "https://resources.jetbrains.com/storage/products/phpstorm/img/meta/phpstorm_1280x800.png"
}</script>
<!-- Schema.org end -->
<!-- Twitter data -->
<meta name="twitter:description" content="Download the latest version of PhpStorm for Windows, macOS or Linux.">
<meta name="twitter:title" content="Download PhpStorm: Lightning-Smart PHP IDE">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@phpstorm">
<meta name="twitter:creator" content="@phpstorm">
<meta name="twitter:image:src" content="https://resources.jetbrains.com/storage/products/phpstorm/img/meta/preview.png">
<meta name="twitter:label1" content="Platforms:">
<meta name="twitter:data1" content="Windows, macOS, Linux">
<!-- Twitter End -->
<!-- Social Media tag Ends -->
</head>
<body class="nojs body-adaptive">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5P98" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<script>
/*! modernizr 3.2.0 (Custom Build) | MIT *
* http://modernizr.com/download/?-flexbox-flexboxtweener !*/
!function(e,n,t){function r(e,n){return typeof e===n}function o(){var e,n,t,o,i,s,l;for(var f in v)if(v.hasOwnProperty(f)){if(e=[],n=v[f],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(o=r(n.fn,"function")?n.fn():n.fn,i=0;i<e.length;i++)s=e[i],l=s.split("."),1===l.length?Modernizr[l[0]]=o:(!Modernizr[l[0]]||Modernizr[l[0]]instanceof Boolean||(Modernizr[l[0]]=new Boolean(Modernizr[l[0]])),Modernizr[l[0]][l[1]]=o),C.push((o?"":"no-")+l.join("-"))}}function i(e,n){return!!~(""+e).indexOf(n)}function s(e){return e.replace(/([a-z])-([a-z])/g,function(e,n,t){return n+t.toUpperCase()}).replace(/^-/,"")}function l(e,n){return function(){return e.apply(n,arguments)}}function f(e,n,t){var o;for(var i in e)if(e[i]in n)return t===!1?e[i]:(o=n[e[i]],r(o,"function")?l(o,t||n):o);return!1}function a(e){return e.replace(/([A-Z])/g,function(e,n){return"-"+n.toLowerCase()}).replace(/^ms-/,"-ms-")}function u(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):b?n.createElementNS.call(n,"http://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}function d(){var e=n.body;return e||(e=u(b?"svg":"body"),e.fake=!0),e}function p(e,t,r,o){var i,s,l,f,a="modernizr",p=u("div"),c=d();if(parseInt(r,10))for(;r--;)l=u("div"),l.id=o?o[r]:a+(r+1),p.appendChild(l);return i=u("style"),i.type="text/css",i.id="s"+a,(c.fake?c:p).appendChild(i),c.appendChild(p),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(n.createTextNode(e)),p.id=a,c.fake&&(c.style.background="",c.style.overflow="hidden",f=_.style.overflow,_.style.overflow="hidden",_.appendChild(c)),s=t(p,e),c.fake?(c.parentNode.removeChild(c),_.style.overflow=f,_.offsetHeight):p.parentNode.removeChild(p),!!s}function c(n,r){var o=n.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(a(n[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+a(n[o])+":"+r+")");return i=i.join(" or "),p("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"==getComputedStyle(e,null).position})}return t}function m(e,n,o,l){function f(){d&&(delete E.style,delete E.modElem)}if(l=r(l,"undefined")?!1:l,!r(o,"undefined")){var a=c(e,o);if(!r(a,"undefined"))return a}for(var d,p,m,h,y,v=["modernizr","tspan"];!E.style;)d=!0,E.modElem=u(v.shift()),E.style=E.modElem.style;for(m=e.length,p=0;m>p;p++)if(h=e[p],y=E.style[h],i(h,"-")&&(h=s(h)),E.style[h]!==t){if(l||r(o,"undefined"))return f(),"pfx"==n?h:!0;try{E.style[h]=o}catch(g){}if(E.style[h]!=y)return f(),"pfx"==n?h:!0}return f(),!1}function h(e,n,t,o,i){var s=e.charAt(0).toUpperCase()+e.slice(1),l=(e+" "+x.join(s+" ")+s).split(" ");return r(n,"string")||r(n,"undefined")?m(l,n,o,i):(l=(e+" "+S.join(s+" ")+s).split(" "),f(l,n,t))}function y(e,n,r){return h(e,t,t,n,r)}var v=[],g={_version:"3.2.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){v.push({name:e,fn:n,options:t})},addAsyncTest:function(e){v.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=g,Modernizr=new Modernizr;var C=[],w="Moz O ms Webkit",x=g._config.usePrefixes?w.split(" "):[];g._cssomPrefixes=x;var S=g._config.usePrefixes?w.toLowerCase().split(" "):[];g._domPrefixes=S;var _=n.documentElement,b="svg"===_.nodeName.toLowerCase(),z={elem:u("modernizr")};Modernizr._q.push(function(){delete z.elem});var E={style:z.elem.style};Modernizr._q.unshift(function(){delete E.style}),g.testAllProps=h,g.testAllProps=y,Modernizr.addTest("flexbox",y("flexBasis","1px",!0)),Modernizr.addTest("flexboxtweener",y("flexAlign","end",!0)),o(),delete g.addTest,delete g.addAsyncTest;for(var P=0;P<Modernizr._q.length;P++)Modernizr._q[P]();e.Modernizr=Modernizr}(window,document);
if (!Modernizr.flexbox && !Modernizr.flexboxtweener) {
var $body = $('body');
var nodesClasses = {
wrapper: 'not-supported-browser',
container: 'not-supported-browser__container',
title: 'not-supported-browser__title',
content: 'not-supported-browser__content',
logo: 'not-supported-browser__logo'
};
var nodes = {
wrapper: $('<div class="' + nodesClasses.wrapper + '"></div>'),
title: $('<div class="' + nodesClasses.title + '">Sorry, your browser is not fully supported</div>'),
content: $('<div class="' + nodesClasses.content + '">There may be some issues with pages layout in your current browser.<br/>Please use an alternate browser until we resolve the issues.<br/>Thank you.</div>'),
container: $('<div class="' + nodesClasses.container + '"></div>'),
logo: $('<div class="' + nodesClasses.logo + '"><svg class="sprite-img _jetbrains" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="#jetbrains"></use></svg></div>')
};
$body.addClass('overflow-hidden');
nodes.content
.prepend(nodes.title)
.prepend(nodes.logo);
nodes.container
.append(nodes.content);
nodes.wrapper
.append(nodes.container)
.appendTo($body);
}
</script>
<div class="page">
<div class="page__header">
<div class="page__header-language-suggestion" id="language-suggest-bar"></div>
<div class="page__header-country-suggestion" id="country-suggest-bar"></div>
<div class="site-header-container" id="js-site-header-container">
<div class="site-header-stub site-header-stub--adaptive">
<div class="wt-container site-header-stub__inner">
<div class="site-header-stub__menu-main-skeleton-text" style="min-width: 69px"></div>
<div class="site-header-stub__menu-main-skeleton-text" style="min-width: 81px"></div>
<div class="site-header-stub__menu-main-skeleton-text" style="min-width: 46px"></div>
<div class="site-header-stub__menu-main-skeleton-button"></div>
<div class="site-header-stub__menu-main-skeleton-button"></div>
</div>
</div>
</div>
<div class="menu-second " id="js-menu-second">
<div class="wt-container">
<div id="js-menu-second-mobile-wrapper" class="wt-display-none">
<div id="js-menu-second-mobile">
<div class="menu-second-mobile wt-row wt-row_size_m wt-row_align-items_center wt-row_justify_between ">
<div class="wt-col-inline menu-second-skeleton-text-2" style="max-width: 120px"></div>
<div class="wt-col-inline menu-second-skeleton-button" style="max-width: 80px"></div>
</div>
</div>
</div>
<div id="js-menu-second-desktop" class="menu-second-desktop
wt-row wt-row_size_0 wt-row_align-items_center">
<div class="wt-col-auto-fill">
<a class="menu-second-title-box"
href="/phpstorm/">
<span class="menu-second-title-box__logo jetbrains-logo">
<svg class="_phpstorm sprite-img" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="#phpstorm"></use></svg>
</span>
<span class="menu-second-title-box__title wt-h3 ">PhpStorm</span>
</a>
</div>
<div class="menu-second-skeleton-text-2" style="max-width: 70px; margin-right: 16px;"></div>
<div class="menu-second-skeleton-text-2" style="max-width: 70px; margin-right: 16px;"></div>
<div class="menu-second-skeleton-text-2" style="max-width: 70px; margin-right: 16px;"></div>
<div class="menu-second-skeleton-text-2" style="max-width: 70px; margin-right: 16px;"></div>
<div class="menu-second-skeleton-text-2" style="max-width: 70px; margin-right: 16px;"></div>
<a href="/phpstorm/download/"
class="wt-col-inline menu-second__download-button wt-button wt-button_size_s
wt-button_mode_primary">
Download
</a>
</div>
</div>
</div>
</div>
<div class="page__content ">
<div id="content">
<section>
<div class="wt-container">
<div id="country-offer-placeholder" class="wt-offset-top-48"></div> </div>
</section>
<div id="download-block">
<div class="wt-section wt-offset-top-96">
<div class="wt-container">
<div class="wt-row wt-row_size_m wt-row-sm_direction_column-reverse">
<div class="wt-col-3 wt-col-md-4 wt-col-sm-12">
<div class="download-logo-skeleton wt-display-sm-none">
<div class="jetbrains-logo-skeleton">
<div class="logo-dark"></div>
</div>
</div>
<div class="wt-row wt-row_size_m wt-offset-top-24">
<div class="wt-col-12">
<span class="download-data-skeleton"></span>
<span class="download-data-skeleton"></span>
<span class="download-data-skeleton"></span>
</div>
</div>
</div>
<div class="wt-col-7 wt-col-md-8 wt-col-sm-12">
<div class="download-title-skeleton wt-offset-top-sm-24"></div>
<div class="download-tabs-skeleton wt-offset-top-12">
<span class="download-tab-skeleton"></span>
<span class="download-tab-skeleton"></span>
<span class="download-tab-skeleton"></span>
</div>
<div class="download-text-skeleton wt-offset-top-24 wt-offset-top-sm-12"></div>
<div class="download-button-skeleton wt-offset-top-24"></div>
</div>
<div class="download-logo-skeleton wt-display-none wt-display-sm-block wt-col-12">
<div class="jetbrains-logo-skeleton">
<div class="logo-dark"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<noscript id="noscript">
<section class="wt-section">
<div class="wt-container wt-offset-top-96">
<p>
Weve noticed that JavaScript is disabled in your web browser. Please <a
href="http://enable-javascript.com/" target="_blank">enable JavaScript</a>
in order to take advantage of all the features of this website.<br/>
Download PhpStorm for your operating system
<a href="//data.services.jetbrains.com/products/download?code=PS&platform=windows">Windows</a>,
<a href="//data.services.jetbrains.com/products/download?code=PS&platform=mac">macOS</a>,
<a href="//data.services.jetbrains.com/products/download?code=PS&platform=linux">Linux</a>.
</p>
</div>
</section>
</noscript>
</div>
</div>
<div class="page__footer" id="footer-container">
<footer class="footer" id="footer"></footer>
</div>
</div>
<script>
(function () {
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
}
var downloadLink = document.getElementById("download-link");
if (downloadLink != null) {
var platform = getParameterByName('platform');
platform = platform != null ? platform : "windows";
var href = downloadLink.getAttribute("href");
var code = getParameterByName("code");
if(code != null) {
href = updateQueryStringParameter(href, "code", code)
}
href = updateQueryStringParameter(href, "platform", platform);
downloadLink.setAttribute("href", href);
}
})();
</script><script>
(function() {
var STORAGE_KEY_NAME = 'firefoxDisappearedSVGWorkaround';
var STORAGE_KEY_VALUE = '1';
var isFirefox = /firefox/i.test(navigator.userAgent);
if (!isFirefox || isFirefox && sessionStorage.getItem(STORAGE_KEY_NAME) === STORAGE_KEY_VALUE) {
return;
}
var arrayFrom = function (arrayLike) {
return Array.prototype.slice.call(arrayLike, 0);
};
function workaround() {
var uses = document.querySelectorAll('.page svg use');
var badNodesCount = 0;
arrayFrom(uses).forEach(function (node) {
var rect = node.getBoundingClientRect();
if (rect.width === 0 && rect.height === 0)
badNodesCount++;
});
if (badNodesCount === uses.length) {
sessionStorage.setItem(STORAGE_KEY_NAME, STORAGE_KEY_VALUE);
if (typeof dataLayer !== 'undefined')
dataLayer.push({'firefoxDisappearedSVGWorkaround': STORAGE_KEY_VALUE});
window.location.replace(window.location.href);
}
}
window.addEventListener('DOMContentLoaded', workaround);
})();
</script> <link href="/_assets/banner-rotator.entry.d57df654959fabf16ae0.css" rel="stylesheet" type="text/css">
<script src="/_assets/banner-rotator.entry.9533e9e02b0f5c3aec9b.js" type="text/javascript"></script>
<script>
(function () {
'use strict';
function ImagesSrcReplacer () {
var attribute = 'data-src';
var matches = document.querySelectorAll('img[' + attribute + ']');
for (var i = 0, n = matches.length; i < n; i++) {
var attrValue = matches[i].getAttribute(attribute);
if (_isHighDensity ()) {
var name = attrValue.substring(0, attrValue.lastIndexOf('.'));
var extention = attrValue.substring(attrValue.lastIndexOf('.'), attrValue.length);
matches[i].setAttribute('src', name + '@2x' + extention);
} else {
matches[i].setAttribute('src', attrValue)
}
}
/**
* Detect high density
* @returns {*|boolean}
*/
function _isHighDensity () {
return (
(window.matchMedia &&
(window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches ||
window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches)) ||
(window.devicePixelRatio &&
window.devicePixelRatio > 1.3));
}
}
return new ImagesSrcReplacer()
}(document, window));
</script></body>
</html>