Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
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
32 changes: 32 additions & 0 deletions images/php8/logo_php8_2.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_2_released.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion index.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
<img class="hero-logo" src="/images/logos/php-logo-white.svg" alt="php" width="240" height="120">
<p class="hero-text">A <strong>popular general-purpose scripting language</strong> that is especially suited to web development.<br />Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.</p>
<div class="hero-actions">
<a href="/releases/8.1/index.php" class="hero-btn hero-btn-primary">What's new in 8.1</a>
<a href="/releases/8.1/index.php" class="hero-btn hero-btn-primary">What's new in 8.2</a>
<a href="/downloads.php" class="hero-btn hero-btn-secondary">Download</a>
</div>
EOF;
Expand Down
75 changes: 75 additions & 0 deletions releases/8.2/common.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php declare(strict_types=1);

namespace releases\php82;

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

function language_redirect(string $currentLang): void {
// We don't use the general language selection of php.net,
// so soldier on with this one.
return;
}

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

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

\site_header("PHP 8.2.0 Release Announcement", [
'current' => 'php8',
'css' => ['php8.css'],
'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.2 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.2 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 language_chooser(string $currentLang): void {
$LANGUAGES = [
'en' => 'English',
'ru' => 'Russian',
];

// Print out the form with all the options
echo '
<form action="" method="get" id="changelang" name="changelang">
<fieldset>
<label for="changelang-langs">Change language:</label>
<select onchange="location = this.value + \'.php\'" name="lang" id="changelang-langs">
';

$tab = ' ';
foreach ($LANGUAGES as $lang => $text) {
$selected = ($lang === $currentLang) ? ' selected="selected"' : '';
echo $tab, "<option value='$lang'$selected>$text</option>\n";
}

echo ' </select>
</fieldset>
</form>
';
}

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

return $translation[$code] ?? $original[$code] ?? $code;
}
5 changes: 5 additions & 0 deletions releases/8.2/en.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

$lang = 'en';

include_once __DIR__ . '/release.inc';
5 changes: 5 additions & 0 deletions releases/8.2/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php
$_SERVER['BASE_PAGE'] = 'releases/8.2/index.php';
include (__DIR__ . '/../../include/site.inc');

mirror_redirect('/releases/8.2/en.php');
40 changes: 40 additions & 0 deletions releases/8.2/languages/en.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

return [
'common_header' => 'PHP 8.2 is a major update of the PHP language. Readonly classes, null, false, and true as stand-alone types, deprecated dynamic properties, performance improvements and more',
'documentation' => 'Doc',
'main_title' => 'To be released tomorrow!',
'main_subtitle' => 'PHP 8.2 is a major update of the PHP language.<br class="display-none-md">It contains many new features, including readonly classes, null, false, and true as stand-alone types, deprecated dynamic properties, performance improvements and more.',
'upgrade_now' => 'Upgrade to PHP 8.2 now!',
'readonly_classes_title' => 'Readonly classes',
'dnf_types_title' => 'Disjunctive Normal Form (DNF) Types',
'dnf_types_description' => 'DNF types allow us to combine <a href="/manual/en/language.types.type-system.php#language.types.type-system.composite.union">union</a> and <a href="/manual/en/language.types.type-system.php#language.types.type-system.composite.intersection">intersection</a> types, following a strict rule: when combining union and intersection types, intersection types must be grouped with brackets.',
'null_false_true_types_title' => 'Allow <code>null</code>, <code>false</code>, and <code>true</code> as stand-alone types',
'random_title' => 'New "Random" extension',
'random_description' => '<p>The "random" extension provides a new object-oriented API to random number generation. Instead of relying on a globally seeded random number generator (RNG) using the Mersenne Twister algorithm the object-oriented API provides several classes ("Engine"s) providing access to modern algorithms that store their state within objects to allow for multiple independent seedable sequences.</p>
<p>The <code>\Random\Randomizer</code> class provides a high level interface to use the engine\'s randomness to generate a random integer, to shuffle an array or string, to select random array keys and more.</p>',
'constants_in_traits_title' => 'Constants in traits',
'constants_in_traits_description' => 'You cannot access the constant through the name of the trait, but, you can access the constant through the class that uses the trait.',
'deprecate_dynamic_properties_title' => 'Deprecate dynamic properties',
'deprecate_dynamic_properties_description' => '<p>The creation of dynamic properties is deprecated to help avoid mistakes and typos, unless the class opts in by using the <code>#[\AllowDynamicProperties]</code> attribute. <code>stdClass</code> allows dynamic properties.</p>
<p>Usage of the <code>__get</code>/<code>__set</code> magic methods is not affected by this change.</p>',
'new_classes_title' => 'New Classes, Interfaces, and Functions',
'new_mysqli' => 'New <a href="/manual/en/mysqli.execute-query.php"><code>mysqli_execute_query</code></a> function and <a href="/manual/en/mysqli.execute-query.php"><code>mysqli::execute_query</code></a> method.',
'new_attributes' => 'New <a href="/manual/en/class.allow-dynamic-properties.php"><code>#[\AllowDynamicProperties]</code></a> and <a href="/manual/en/class.sensitive-parameter.php"><code>#[\SensitiveParameter]</code></a> attributes.',
'new_zip' => 'New <a href="/manual/en/ziparchive.getstreamindex.php"><code>ZipArchive::getStreamIndex</code></a>, <a href="/manual/en/ziparchive.getstreamname.php"><code>ZipArchive::getStreamName</code></a>, and <a href="/manual/en/ziparchive.clearerror.php"><code>ZipArchive::clearError</code></a> methods.',
'new_reflection' => 'New <a href="/manual/en/reflectionfunction.isanonymous.php"><code>ReflectionFunction::isAnonymous</code></a> and <a href="/manual/en/reflectionmethod.hasprototype.php"><code>ReflectionMethod::hasPrototype</code></a> methods.',
'new_functions' => 'New <a href="/manual/en/function.curl_upkeep.php"><code>curl_upkeep</code></a>, <a href="/manual/en/function.memory-reset-peak-usage.php"><code>memory_reset_peak_usage</code></a>, <a href="/manual/en/function.ini-parse-quantity.php"><code>ini_parse_quantity</code></a>, <a href="/manual/en/function.libxml-get-external-entity-loader.php"><code>libxml_get_external_entity_loader</code></a>, <a href="/manual/en/function.sodium-crypto-stream-xchacha20-xor-ic.php"><code>sodium_crypto_stream_xchacha20_xor_ic</code></a>, <a href="/manual/en/function.openssl-cipher-key-length.php"><code>openssl_cipher_key_length</code></a> functions.',
'bc_title' => 'Deprecations and backward compatibility breaks',
'bc_string_interpolation' => 'Deprecated <code>${}</code> string interpolation.',
'bc_utf8' => 'Deprecated <a href="/manual/en/function.utf8-encode.php"><code>utf8_encode</code></a> and <a href="/manual/en/function.utf8-decode.php"><code>utf8_decode</code></a> functions.',
'bc_datetime' => 'Methods <a href="/manual/en/datetime.createfromimmutable.php"><code>DateTime::createFromImmutable</code></a> and <a href="/manual/en/datetimeimmutable.createfrommutable.php"><code>DateTimeImmutable::createFromMutable</code></a> has a tentative return type of <code>static</code>.',
'bc_odbc' => 'Extensions <code>ODBC</code> and <code>PDO_ODBC</code> escapes the username and password.',
'bc_str_locale_sensitive' => 'Functions <a href="/manual/en/function.strtolower.php"><code>strtolower</code></a> and <a href="/manual/en/function.strtoupper.php"><code>strtoupper</code></a> are no longer locale-sensitive.',
'bc_spl_enforces_signature' => 'Methods <a href="/manual/en/splfileobject.getcsvcontrol.php"><code>SplFileObject::getCsvControl</code></a>, <a href="/manual/en/splfileobject.fflush.php"><code>SplFileObject::fflush</code></a>, <a href="/manual/en/splfileobject.ftell.php"><code>SplFileObject::ftell</code></a>, <a href="/manual/en/splfileobject.fgetc.php"><code>SplFileObject::fgetc</code></a>, and <a href="/manual/en/splfileobject.fpassthru.php"><code>SplFileObject::fpassthru</code></a> enforces their signature.',
'bc_spl_false' => 'Method <a href="/manual/en/splfileobject.haschildren.php"><code>SplFileObject::hasChildren</code></a> has a tentative return type of <code>false</code>.',
'bc_spl_null' => 'Method <a href="/manual/en/splfileobject.getchildren.php"><code>SplFileObject::getChildren</code></a> has a tentative return type of <code>null</code>.',
'bc_spl_deprecated' => 'The internal method <code>SplFileInfo::_bad_state_ex</code> has been deprecated.',
'footer_title' => 'Better performance, better syntax, improved type safety.',
'footer_description' => '<p>For source downloads of PHP 8.2 please visit the <a href="/downloads">downloads</a> page. Windows binaries can be found on the <a href="https://windows.php.net/download">PHP for Windows</a> site. The list of changes is recorded in the <a href="/ChangeLog-8.php#PHP_8_2">ChangeLog</a>.</p>
<p>The <a href="/manual/en/migration82.php">migration guide</a> is available in the PHP Manual. Please consult it for a detailed list of new features and backward-incompatible changes.</p>',
];
Loading