Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
2614191
Add PHP 8.5 release page
saundefined Sep 25, 2025
ec7b3ef
wip
saundefined Oct 1, 2025
5fc81d6
wip
saundefined Oct 1, 2025
1027001
Apply suggestions from code review
saundefined Oct 3, 2025
4c0fe2b
wip
saundefined Oct 3, 2025
6e7045f
wip
saundefined Oct 3, 2025
b655856
Apply suggestions from code review
saundefined Oct 5, 2025
7301dd8
Apply suggestions from code review
saundefined Oct 5, 2025
d525379
cs
saundefined Oct 5, 2025
9d16f51
Apply suggestions from code review
saundefined Oct 12, 2025
2562983
Update releases/8.5/languages/en.php
saundefined Oct 12, 2025
4ddd043
Apply suggestions from code review
saundefined Oct 20, 2025
e337dae
Apply suggestions from code review
saundefined Oct 22, 2025
eac11c7
Revamp PHP 8.5 examples and content (#31)
theodorejb Nov 4, 2025
0f13eb7
Move Pipe Operator after URI Extension and use more realistic `array_…
theodorejb Nov 6, 2025
f3a3090
Apply suggestions from code review
saundefined Nov 7, 2025
ab0979a
Update deprecations and BC breaks and extract strings for translation…
theodorejb Nov 14, 2025
021bc8d
Starting new design
saundefined Nov 18, 2025
f7a76ae
nits
saundefined Nov 18, 2025
f68b9f3
add language chooser
saundefined Nov 18, 2025
33f87da
Fix wording
saundefined Nov 18, 2025
84ad5d0
Apply suggestions from code review
saundefined Nov 18, 2025
2c3e7d6
Add Russian
saundefined Nov 18, 2025
00e5f99
Fix features grid
saundefined Nov 18, 2025
50642ad
nits
saundefined Nov 18, 2025
3a81462
Apply suggestions from code review
saundefined Nov 18, 2025
9e1fe23
Add assets
saundefined Nov 18, 2025
396af65
Fix css for headsup
saundefined Nov 18, 2025
71aa8d4
replace footer with new design
saundefined Nov 18, 2025
348a3fb
Fix language switcher
saundefined Nov 18, 2025
5441837
Fix search
saundefined Nov 18, 2025
7affbc1
Update highlight and examples
saundefined Nov 18, 2025
5c070f5
Fix description align to left
saundefined Nov 18, 2025
84908db
Apply suggestions from code review
saundefined Nov 18, 2025
d206e8f
Apply suggestions from code review
saundefined Nov 18, 2025
810c742
Fix sort of features
saundefined Nov 18, 2025
90324a2
Copy to clipboard removed in favor of Prism
saundefined Nov 18, 2025
57587a3
Theme switcher moved to common.js
saundefined Nov 18, 2025
b74bf43
Wording
saundefined Nov 18, 2025
615c5ad
nits
saundefined Nov 18, 2025
87207d2
nits
saundefined Nov 18, 2025
e26adb1
nits
saundefined Nov 18, 2025
363399a
nits
saundefined Nov 18, 2025
58f0b35
nits
saundefined Nov 18, 2025
2ece98a
nits
saundefined Nov 18, 2025
a78a496
Fix missing noise background (#34)
theodorejb Nov 18, 2025
b31ceba
nits
saundefined Nov 18, 2025
edd3f3d
Wording
saundefined Nov 19, 2025
4003b14
Wording
saundefined Nov 19, 2025
84ffb85
Fix theme switcher
saundefined Nov 19, 2025
1536c3f
Add anchors to titles
saundefined Nov 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions images/php8/anchor-white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions images/php8/logo_php8_5.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/php8/php_8_5_released.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion include/footer.inc
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@

</div><!-- layout -->

<?php if(!isset($config['footer']) || $config['footer']): ?>
<footer>
<div class="container footer-content">
<div class="row-fluid">
Expand Down Expand Up @@ -87,7 +88,7 @@ if (!empty($_SERVER['BASE_PAGE'])
</div>
</div>
</footer>

<?php endif; ?>
<?php
// if elephpants enabled, insert placeholder nodes
// to be populated with images via javascript.
Expand Down
24 changes: 24 additions & 0 deletions include/header.inc
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,16 @@ if (!isset($config["languages"])) {
</div>

<div class="navbar__right">
<?php if (!empty($config['language_switcher'])) { ?>
<div class="navbar__languages">
<select onchange="location = this.value">
<?php foreach ($config['language_switcher'] as $item) { ?>
<option value="<?= $item['url'] ?>"<?= $item['selected'] ? ' selected' : ''?>><?= $item['name'] ?></option>
<?php } ?>
</select>
</div>
<?php } ?>

<?php
// https://feathericons.com search
$searchIcon = <<<SVG
Expand Down Expand Up @@ -243,6 +253,20 @@ if (!isset($config["languages"])) {
Search docs
</button>

<?php if (isset($config['theme_switcher']) && $config['theme_switcher']) { ?>
<button type="button" class="navbar__theme js-theme-switcher">
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20" class="">
<path fill="currentColor" d="M9.52734 16.7852h1.24996v2.5195H9.52734v-2.5195Zm-3.62304-1.501-1.78125 1.7812-.88477-.8838.44238-.4414.89746-.8984.44239-.4414.88379.8838Zm9.8223-.4424 1.3388 1.3398-.8838.8838-1.7812-1.7812.8838-.8838.4424.4414ZM6.61621 6.61621c1.95259-1.95249 5.11869-1.9524 7.07129 0 1.9526 1.95264 1.9526 5.11869 0 7.07129-1.9526 1.9527-5.11863 1.9527-7.07129 0-1.95241-1.9526-1.95253-5.11871 0-7.07129ZM12.8037 7.5C11.3393 6.03577 8.96445 6.03565 7.5 7.5c-1.46441 1.46444-1.46424 3.8393 0 5.3037 1.46451 1.4645 3.8393 1.4645 5.3037 0 1.4645-1.4644 1.4645-3.8392 0-5.3037ZM3.51953 9.52734v1.24996H1V9.52734h2.51953Zm15.78517 0v1.24996h-2.5195V9.52734h2.5195ZM5.9043 5.02051l-.88379.88379-1.78223-1.78223.88379-.88379L5.9043 5.02051Zm11.1611-.89746L15.2842 5.9043l-.8838-.88379.4414-.44239.8984-.89746.4414-.44238.8838.88477ZM9.52734 1h1.24996v2.51953H9.52734V1Z"></path>
</svg>
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20" class="hidden">
<path fill="currentColor" fill-rule="evenodd" d="M16.3206 11.5837c-.5616.1539-1.1526.2361-1.7622.2361-3.6772 0-6.65822-2.98106-6.65822-6.6583 0-.60954.08215-1.20052.23597-1.76214-2.85657.76023-4.96116 3.36465-4.96116 6.4606 0 3.69204 2.99298 6.68504 6.68499 6.68504 3.09602 0 5.70042-2.1046 6.46062-4.9613Zm.2115-1.3049c-.6124.2364-1.2779.366-1.9737.366-3.0283 0-5.48323-2.45498-5.48323-5.4833 0-.69574.12956-1.36121.36589-1.9736.11523-.29842.25567-.58423.41892-.8548.06807-.11277.14002-.22291.21582-.33019C10.004 2.00097 9.93212 2 9.85998 2c-.41211 0-.81677.03172-1.21172.09283C4.88261 2.67555 2 5.93113 2 9.85996 2 14.2009 5.51904 17.72 9.85998 17.72c3.92892 0 7.18452-2.8826 7.76722-6.6483.0611-.395.0928-.7996.0928-1.21174 0-.07214-.001-.14413-.003-.2158-.1073.07575-.2174.14773-.3302.2158-.2706.16324-.5563.30374-.8547.41884Z" clip-rule="evenodd"></path>
</svg>
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20" class="hidden">
<path fill="currentColor" fill-rule="evenodd" d="M16.541 9.86c0 3.6898-2.9912 6.681-6.681 6.681V3.179c3.6898 0 6.681 2.99119 6.681 6.681ZM9.86 17.72c4.3409 0 7.86-3.5191 7.86-7.86C17.72 5.51904 14.2009 2 9.86 2 5.51904 2 2 5.51904 2 9.86c0 4.3409 3.51904 7.86 7.86 7.86Z" clip-rule="evenodd"></path>
</svg>
</button>
<?php } ?>

<!-- Mobile default items -->
<a
id="navbar__search-link"
Expand Down
30 changes: 30 additions & 0 deletions js/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -838,3 +838,33 @@ function getLanguage() {
});
});
})(jQuery);

const savedTheme = localStorage.theme || 'system';
const prefersDark = matchMedia('(prefers-color-scheme: dark)').matches;
const isDark = savedTheme === 'dark' || (savedTheme === 'system' && prefersDark);

if (isDark) document.documentElement.classList.add('dark');

const themeOrder = ['light', 'dark', 'system'];

const btn = document.querySelector('button.js-theme-switcher');

btn?.addEventListener('click', () => {
const current = localStorage.theme || 'system';
const nextIndex = (themeOrder.indexOf(current) + 1) % themeOrder.length;
const newTheme = themeOrder[nextIndex];
localStorage.theme = newTheme;
applyTheme(newTheme);
});

function applyTheme(theme) {
const prefersDark = matchMedia('(prefers-color-scheme: dark)').matches;
const isDark = theme === 'dark' || (theme === 'system' && prefersDark);

document.documentElement.classList.toggle('dark', isDark);

const icons = [btn?.querySelector('svg:nth-of-type(1)'), btn?.querySelector('svg:nth-of-type(2)'), btn?.querySelector('svg:nth-of-type(3)')];
icons.forEach((icon, i) => icon?.classList.toggle('hidden', themeOrder[i] !== theme));
}

applyTheme(savedTheme)
7 changes: 5 additions & 2 deletions js/ext/prism.js

Large diffs are not rendered by default.

64 changes: 64 additions & 0 deletions releases/8.5/common.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php

declare(strict_types=1);

namespace releases\php85;

include_once __DIR__ . '/../../include/prepend.inc';

const LANGUAGES = [
'en' => 'English',
'ru' => 'Русский',
];

function common_header(string $description): void {
global $MYSITE, $lang;

$meta_image_path = \htmlspecialchars(
\filter_var($MYSITE . 'images/php8/php_8_5_released.png', \FILTER_VALIDATE_URL));
$meta_description = \htmlspecialchars($description);

$languages = [];
foreach (LANGUAGES as $code => $text) {
$languages[] = ['name' => $text, 'selected' => $lang === $code, 'url' => '/releases/8.5/' . $code . '.php'];
}

\site_header("PHP 8.5 Release Announcement", [
'current' => 'php85',
'css' => ['prism.css', 'php85.css'],
'js_files' => ['js/ext/prism.js'],
'language_switcher' => $languages,
'theme_switcher' => true,
'meta_tags' => <<<META
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@official_php" />
<meta name="twitter:title" content="PHP 8.5 Released" />
<meta name="twitter:description" content="{$meta_description}" />
<meta name="twitter:creator" content="@official_php" />
<meta name="twitter:image:src" content="{$meta_image_path}" />

<meta itemprop="name" content="PHP 8.5 Released" />
<meta itemprop="description" content="{$meta_description}" />
<meta itemprop="image" content="{$meta_image_path}" />

<meta property="og:image" content="{$meta_image_path}" />
<meta property="og:description" content="{$meta_description}" />
META
]);
}

function message($code, $language = 'en', array $interpolations = [])
{
$original = require __DIR__ . '/languages/en.php';
if (($language !== 'en') && file_exists(__DIR__ . '/languages/' . $language . '.php')) {
$translation = require __DIR__ . '/languages/' . $language . '.php';
}

$message = $translation[$code] ?? $original[$code] ?? $code;

foreach ($interpolations as $name => $value) {
$message = str_replace("{{$name}}", $value, $message);
}

return $message;
}
5 changes: 5 additions & 0 deletions releases/8.5/en.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

$lang = 'en';

include_once __DIR__ . '/release.inc';
13 changes: 13 additions & 0 deletions releases/8.5/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

use phpweb\LangChooser;
use const releases\php85\LANGUAGES;

$_SERVER['BASE_PAGE'] = 'releases/8.5/index.php';
require_once __DIR__ . '/common.php';
require_once __DIR__ . '/../../src/autoload.php';

$langChooser = new LangChooser(LANGUAGES, [], "", "");
[$lang,] = $langChooser->chooseCode("", "", $_SERVER['HTTP_ACCEPT_LANGUAGE']);

mirror_redirect("/releases/8.5/$lang.php");
Loading
Loading