Commit:    78a91db65b91a9bfa69d6d7f0ecdd22db3fe683b
Author:    Ruslan <[email protected]>         Fri, 6 Nov 2020 10:15:14 +0300
Committer: Sara Golemon <[email protected]>      Wed, 25 Nov 2020 20:28:13 +0000
Parents:   4fed49de5b151a47fd97c4aec57d43b6acbdb20d
Branches:  master

Link:       
http://git.php.net/?p=web/php.git;a=commitdiff;h=78a91db65b91a9bfa69d6d7f0ecdd22db3fe683b

Log:
JS-13812 Develop markup for PHP 8 announcement on php.net

Changed paths:
  A  images/icon_arrow.svg
  A  images/logos/logo_php8.svg
  A  images/party-popper.png
  A  images/[email protected]
  A  images/[email protected]
  M  include/header.inc
  A  php8.php
  A  styles/php8.css
  M  styles/theme-base.css

diff --git a/images/icon_arrow.svg b/images/icon_arrow.svg
new file mode 100644
index 000000000..b02bdd6c6
--- /dev/null
+++ b/images/icon_arrow.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg"; width="19" height="36" viewBox="0 0 19 
36">
+    <g fill="none" fill-rule="evenodd" stroke-linecap="square" opacity=".6" 
stroke="#979797">
+        <path d="M.528.514L18.472 18M18.472 18L.528 35.486" 
transform="translate(-709 -793) translate(709 793)"/>
+    </g>
+</svg>
diff --git a/images/logos/logo_php8.svg b/images/logos/logo_php8.svg
new file mode 100644
index 000000000..ce8cbe861
--- /dev/null
+++ b/images/logos/logo_php8.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg"; width="343" height="126" viewBox="0 0 
343 126">
+    <g fill="#FFF">
+        <path d="M51.064 41.386c7.962 0 13.268 1.468 15.921 4.408 2.652 2.94 
3.283 7.986 1.896 15.136-1.45 7.446-4.238 12.761-8.375 15.945-4.136 3.185-10.43 
4.775-18.879 4.775H28.879l7.825-40.264h14.36zM0 
122.41h20.958l4.972-25.578h17.95c7.922 0 14.437-.83 19.554-2.496 5.115-1.662 
9.763-4.453 13.948-8.37 3.513-3.227 6.353-6.788 8.53-10.682 2.173-3.89 
3.718-8.186 4.631-12.885 2.217-11.404.543-20.287-5.016-26.65C79.97 29.386 
71.124 26.204 59 26.204H18.7L0 122.41M105.935.626h20.792l-4.971 
25.578h18.523c11.656 0 19.695 2.033 24.12 6.098 4.424 4.065 5.75 10.654 3.98 
19.761l-8.7 
44.77h-21.122l8.271-42.568c.942-4.842.597-8.145-1.039-9.907-1.634-1.761-5.112-2.642-10.432-2.642h-16.618l-10.71
 55.116H87.234l18.7-96.206M214.643 41.386c7.962 0 13.268 1.468 15.921 4.408 
2.652 2.94 3.284 7.986 1.896 15.136-1.45 7.446-4.238 12.761-8.375 15.945-4.136 
3.185-10.43 4.775-18.879 4.775h-12.748l7.825-40.264h14.36zm-51.064 
81.024h20.958l4.97-25.578h17.952c7.92 0 14.436-.83 19.553-2.496 5.115-1.662 
9.764-4.453 13.949-8.37 3.512-3.227 6.353-6.788 8.53-10.682 2.173-3.89 
3.718-8.186 4.63-12.885 
2.218-11.404.545-20.287-5.014-26.65-5.56-6.363-14.404-9.545-26.528-9.545h-40.302L163.58
 122.41" transform="translate(-548 -112) translate(548 112) translate(0 3)"/>
+        <path d="M316.964 48.124c-5.653-13.604-10.537-25.357-5.765-33.57 
1.773-2.492 3.8-3.755 6.022-3.755 4.474 0 8.56 4.893 8.6 4.943l5.701 
6.92-3.564-8.225C327.702 13.847 321.573 0 310.573 0c-3.847 0-7.787 1.732-11.71 
5.146l-.125.127c-9.51 10.993-.159 31.75 8.091 50.062l.02.044 6.122 
14.232s.64.51 0 0c2.837 7.27 5.561 16.01 3.86 22.373-2.648 9.976-11.504 
16.849-11.593 16.917l-5.736 4.393 6.887-2.184c.651-.206 16.007-5.212 
19.685-18.518 2.301-10.89-.596-21.788-3.531-30.233.382-.315-.393.333 0 
0l-5.348-13.677" transform="translate(-548 -112) translate(548 112)"/>
+    </g>
+    <path fill="#0F0F0F" d="M333.91 9.388l-7.136-7.79 5.096 9.254c.064.115 
6.257 11.682-1.563 25.209-2.945 4.166-7.35 8.407-13.112 12.62l-10.365 
6.656c-.111-.248-.056-.124 0-.002l-.365.264.053-.01-.053.01C295 62.194 284.278 
66.235 284.099 66.306c-15.94 7.096-25.877 18.145-27.261 30.313-1.05 9.23 3.168 
18.153 11.572 24.482l.11.074c5.283 3.17 10.999 4.778 16.987 4.778 15.74 0 
28.016-10.891 28.532-11.356l7.654-6.893-9.093 4.838c-.077.04-7.65 4.02-15.569 
4.02-7.06 0-12.14-3.149-15.101-9.36-3.783-13.45 9.477-22.629 24.826-33.25 
2.037-1.41 4.133-2.86 
6.215-4.34.012.033.116-.119.13-.086l9.084-6.75c.137-.214.37-.38.358-.417 
7.548-6.222 17.414-15.901 19.717-29.482 1.781-12.267-7.937-23.037-8.35-23.49z" 
transform="translate(-548 -112) translate(548 112)"/>
+</svg>
diff --git a/images/party-popper.png b/images/party-popper.png
new file mode 100644
index 000000000..031d8b594
Binary files /dev/null and b/images/party-popper.png differ
diff --git a/images/[email protected] b/images/[email protected]
new file mode 100644
index 000000000..e3f00a530
Binary files /dev/null and b/images/[email protected] differ
diff --git a/images/[email protected] b/images/[email protected]
new file mode 100644
index 000000000..1632170c1
Binary files /dev/null and b/images/[email protected] differ
diff --git a/include/header.inc b/include/header.inc
index 48a93ebd3..ed5aa63b3 100644
--- a/include/header.inc
+++ b/include/header.inc
@@ -116,6 +116,11 @@ if (!isset($config["languages"])) {
       <li class="<?php echo $curr == "docs" ? "active" : ""?>"><a 
href="/docs.php">Documentation</a></li>
       <li class="<?php echo $curr == "community" ? "active" : ""?>"><a 
href="/get-involved" >Get Involved</a></li>
       <li class="<?php echo $curr == "help" ? "active" : ""?>"><a 
href="/support">Help</a></li>
+      <li class="<?php echo $curr == "php8" ? "active" : "" ?>">
+        <a href="/php8">
+          <img src="/images/logos/logo_php8.svg" alt="php8" height="22" 
width="60">
+        </a>
+      </li>
     </ul>
     <form class="navbar-search" id="topsearch" action="/search.php">
       <input type="hidden" name="show" value="quickref">
diff --git a/php8.php b/php8.php
new file mode 100644
index 000000000..1eddede0d
--- /dev/null
+++ b/php8.php
@@ -0,0 +1,444 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'php8.php';
+include_once __DIR__ . '/include/prepend.inc';
+
+site_header("php 8", array("current" => "php8"));
+?>
+<link rel="stylesheet" href="/styles/php8.css">
+<div class="php8">
+  <div class="php8__section php8__section_dark php8__section_header center">
+    <div class="php8__logo">
+      <img src="/images/logos/logo_php8.svg" alt="" height="126" width="343">
+    </div>
+    <div class="php8__title">
+      <span class="php8__title-text">released!</span>
+      <img class="php8__title-img" src="/images/party-popper.png" 
srcset="/images/[email protected] 2x, /images/[email protected] 3x" alt="" 
width="58" height="58">
+    </div>
+    <div class="php8__subtitle">
+      PHP 8.0 is a major update of the PHP language. It contains many new 
features and optimizations. Including named
+      arguments, union types, attributes, constructor property promotion, 
match expression, nullsafe operator, JIT, and
+      improvements in type system, error handling, and consistency.
+    </div>
+  </div>
+
+  <div class="php8__section center">
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Named arguments
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/named_params";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="default">htmlspecialchars</span>(<span 
class="default">$string</span>,
+              <span class="default">ENT_COMPAT | ENT_HTML401</span>, <span 
class="string">'UTF-8'</span>,
+              <span class="keyword">false</span>);
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span 
class="methodname"><strong>htmlspecialchars</strong></span>(<span 
class="parameter">$string</span>,
+              double_encode: <span class="initializer">false</span>);
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Attributes
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/attributes_v2";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="comment">/**</span><br>
+              <span class="comment">* @Route("/api/posts/{id}", 
methods={"GET", "HEAD"})</span><br>
+              <span class="comment">*/</span><br>
+              <span class="keyword">class</span> <span 
class="default">User</span><br>
+              {
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              #[Route(<span class="string">"/api/posts/{id}"</span>,
+              methods: [<span class="string">"GET"</span>, <span 
class="string">"HEAD"</span>])]<br>
+              <span class="keyword">class</span> <span 
class="default">User</span><br>
+              {<br>
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Constructor property promotion
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/constructor_promotion";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="keyword">class</span> Point {<br>
+              &nbsp;&nbsp;<span class="keyword">public</span> <span 
class="keyword">float</span> $x;<br>
+              &nbsp;&nbsp;<span class="keyword">public</span> <span 
class="keyword">float</span> $y;<br>
+              &nbsp;&nbsp;<span class="keyword">public</span> <span 
class="keyword">float</span> $z;<br>
+              <br>
+              &nbsp;&nbsp;<span class="keyword">public</span> <span 
class="keyword">function</span> __construct(<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">float</span> $x = 
0.0,<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">float</span> $y = 
0.0,<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">float</span> $z = 
0.0,<br>
+              &nbsp;&nbsp;) {<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$this->x = $x;<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$this->y = $y;<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$this->z = $z;<br>
+              &nbsp;&nbsp;}<br>
+              }
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="keyword">class</span> Point {<br>
+              &nbsp;&nbsp;<span class="keyword">public</span> <span 
class="keyword">function</span> __construct(<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span> 
<span class="keyword">float</span> $x = 0.0,<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span> 
<span class="keyword">float</span> $y = 0.0,<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span> 
<span class="keyword">float</span> $z = 0.0,<br>
+              &nbsp;&nbsp;) {}<br>
+              }
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Union types
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/union_types_v2";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="keyword">class</span> Number {<br>
+              &nbsp;&nbsp;<span class="comment">/** @var int|float 
*/</span><br>
+              &nbsp;&nbsp;<span class="keyword">private</span> $number;<br>
+              <br>
+              &nbsp;&nbsp;<span class="comment">/**</span><br>
+              &nbsp;&nbsp;<span class="comment">* @param float|int 
$number</span><br>
+              &nbsp;&nbsp;<span class="comment">*/</span><br>
+              &nbsp;&nbsp;<span class="keyword">public</span> function 
__construct($number) {<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$this->number = $number;<br>
+              &nbsp;&nbsp;}<br>
+              }<br>
+              <br>
+              <span class="keyword">new</span> Number(<span 
class="string">'NaN'</span>); <span class="comment">// Ok</span>
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="keyword">class</span> Number {<br>
+              &nbsp;&nbsp;<span class="keyword">public</span> function 
__construct(<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span> 
<span class="keyword">int</span>|<span class="keyword">float</span> $number<br>
+              &nbsp;&nbsp;) {}
+              }<br>
+              <br>
+              <span class="keyword">new</span> Number(<span 
class="string">'NaN'</span>); <span class="comment">// TypeError</span>
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Match expression
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/match_expression_v2";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="keyword">switch</span> (8.0) {<br>
+              &nbsp;&nbsp;<span class="keyword">case</span> <span 
class="string">'8.0'</span>:<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$result = <span class="string">"Oh 
no!"</span>;<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span>;<br>
+              &nbsp;&nbsp;<span class="keyword">case</span> 8.0:<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$result = <span class="string">"This is 
what I expected"</span>;<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span>;<br>
+              }<br>
+              <span class="keyword">echo</span> $result;<br>
+              <span class="comment">//> Oh no!</span>
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              <span class="keyword">echo</span> match (8.0) {<br>
+              &nbsp;&nbsp;<span class="string">'8.0'</span> => <span 
class="string">"Oh no!"</span>,<br>
+              &nbsp;&nbsp;8.0 => <span class="string">"This is what I 
expected"</span>,<br>
+              };<br>
+              <span class="comment">//> This is what I expected</span>
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Nullsafe operator
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/nullsafe_operator";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              $country =  <span class="keyword">null</span>;<br>
+              <br>
+              <span class="keyword">if</span> ($session !== <span 
class="keyword">null</span>) {<br>
+              &nbsp;&nbsp;$user = $session->user;<br>
+              <br>
+              &nbsp;&nbsp;<span class="keyword">if</span> ($user !== <span 
class="keyword">null</span>) {<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;$address = $user->getAddress();<br>
+              <br>
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span 
class="keyword">if</span> ($address !== <span class="keyword">null</span>) {<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$country = 
$address->country;<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
+              &nbsp;&nbsp;&nbsp;&nbsp;}<br>
+              }
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              $country = $session?->user?->getAddress()?->country;
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Saner string to number comparisons
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/string_to_number_comparison";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              0 == <span class="string">'foobar'</span> <span 
class="comment">// true</span>
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              0 == <span class="string">'foobar'</span> <span 
class="comment">// false</span>
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="php8__compare">
+      <h2 class="php8__h2">
+        Consistent type errors for internal functions
+        <a class="php8__rfc" 
href="https://wiki.php.net/rfc/consistent_type_errors";>RFC</a>
+      </h2>
+      <div class="php8__compare-main">
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label">PHP 7</div>
+          <div class="php8__code phpcode">
+            <code>
+              strlen([]); <span class="comment">// Warning: strlen() expects 
parameter 1 to be string, array given</span><br>
+              <br>
+              array_chunk([], -1); <span class="comment">// Warning: 
array_chunk(): Size parameter expected to be greater than 0</span>
+            </code>
+          </div>
+        </div>
+        <div class="php8__compare-arrow"></div>
+        <div class="php8__compare-block example-contents">
+          <div class="php8__compare-label php8__compare-label_new">PHP 8</div>
+          <div class="php8__code phpcode">
+            <code>
+              strlen([]); <span class="comment">// TypeError: strlen(): 
Argument #1 ($str) must be of type string, array given</span><br>
+              <br>
+              array_chunk([], -1); <span class="comment">// ValueError: 
array_chunk(): Argument #2 ($length) must be greater than 0</span>
+            </code>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <div class="php8__section php8__section_light">
+    <h2 class="php8__h2">Other syntax tweaks and improvements</h2>
+    <div class="php8__columns">
+      <div class="php8__column">
+        <ul>
+          <li>
+            Allow trailing comma in parameter list <a 
href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list";>RFC</a>
+            and closure use lists <a 
href="https://wiki.php.net/rfc/trailing_comma_in_closure_use_list";>RFC</a>
+          </li>
+          <li>
+            Non-capturing catches <a href="http://TODO";>RFC</a>
+          </li>
+          <li>
+            Variable Syntax Tweaks <a 
href="https://wiki.php.net/rfc/variable_syntax_tweaks";>RFC</a>
+          </li>
+        </ul>
+      </div>
+      <div class="php8__column">
+        <ul>
+          <li>
+            Treat namespaced names as single token <a 
href="https://wiki.php.net/rfc/namespaced_names_as_token";>RFC</a>
+          </li>
+          <li>
+            Throw expression <a 
href="https://wiki.php.net/rfc/throw_expression";>RFC</a>
+          </li>
+          <li>
+            Allow ::class on objects <a 
href="https://wiki.php.net/rfc/class_name_literal_on_object";>RFC</a>
+          </li>
+        </ul>
+      </div>
+    </div>
+    <div class="php8__columns">
+      <div class="php8__column">
+        <h2 class="php8__h2 php8__h2_margin-top">Type system and error 
handling improvements</h2>
+        <ul>
+          <li>
+            Saner string to number comparisons <a 
href="https://wiki.php.net/rfc/string_to_number_comparison";>RFC</a>
+          </li>
+          <li>
+            Stricter type checks for arithmetic/bitwise operators
+            <a 
href="https://wiki.php.net/rfc/arithmetic_operator_type_checks";>RFC</a>
+          </li>
+          <li>
+            Abstract trait method validation <a href="http://TODO";>RFC</a>
+          </li>
+          <li>
+            Correct signatures of magic methods <a 
href="https://wiki.php.net/rfc/magic-methods-signature";>RFC</a>
+          </li>
+          <li>
+            Reclassified engine warnings <a 
href="https://wiki.php.net/rfc/engine_warnings";>RFC</a>
+          </li>
+          <li>
+            Fatal error for incompatible method signatures <a 
href="https://wiki.php.net/rfc/lsp_errors";>RFC</a>
+          </li>
+          <li>
+            The @ operator no longer silences fatal errors
+          </li>
+          <li>
+            Inheritance with private methods <a 
href="https://wiki.php.net/rfc/inheritance_private_methods";>RFC</a>
+          </li>
+          <li>
+            Mixed type <a href="https://wiki.php.net/rfc/mixed_type_v2";>RFC</a>
+          </li>
+          <li>
+            Static return type <a href="">RFC</a>
+          </li>
+          <li>
+            Types for internal functions
+            <a href="https://externals.io/message/106522";>RFC</a>
+          </li>
+          <li>
+            Curl objects instead of resources
+            <a 
href="https://php.watch/versions/8.0/resource-CurlHandle";>RFC</a>
+          </li>
+        </ul>
+      </div>
+      <div class="php8__column">
+        <h2 class="php8__h2 php8__h2_margin-top">New Classes, Interfaces, and 
Functions</h2>
+        <ul>
+          <li>
+            <a href="https://wiki.php.net/rfc/weak_maps";>Weak Map</a> class
+          </li>
+          <li>
+            <a href="https://wiki.php.net/rfc/stringable";>Stringable</a> 
interface
+          </li>
+          <li>
+            <a href="https://wiki.php.net/rfc/str_contains";>str_contains()</a>,
+            <a 
href="https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions";>str_starts_with()</a>,
+            <a 
href="https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions";>str_ends_with()</a>
+          </li>
+          <li>
+            <a href="https://github.com/php/php-src/pull/4769";>fdiv()</a>
+          </li>
+          <li>
+            <a 
href="https://wiki.php.net/rfc/get_debug_type";>get_debug_type()</a>
+          </li>
+          <li>
+            <a 
href="https://github.com/php/php-src/pull/5427";>get_resource_id()</a>
+          </li>
+          <li>
+            <a 
href="https://wiki.php.net/rfc/token_as_object";>token_get_all()</a> object 
implementation
+          </li>
+        </ul>
+      </div>
+    </div>
+  </div>
+
+  <div class="php8__section php8__section_dark php8__section_footer center">
+    <h2 class="php8__h2">
+      Get free performance improvement.<br class="display-none-lg 
display-block-md">
+      Get better syntax.<br class="display-block-lg display-none-md 
display-block-sm">
+      Get more strictness.
+    </h2>
+    <div class="php8__button-wrapper">
+      <a class="php8__button php8__button_light" href="#">Go update to PHP 
8!</a>
+    </div>
+    <div class="php8__footer-content">
+      <p>
+        For source downloads of PHP 8 please visit our <a 
href="http://www.php.net/downloads";>downloads</a> page.
+        Windows binaries can be found on the <a 
href="http://windows.php.net/download";>PHP for Windows</a> site.
+        The list of changes is recorded in the <a 
href="http://www.php.net/ChangeLog-8.php";>ChangeLog</a>.
+      </p>
+      <p>
+        The <a href="http://php.net/manual/en/migration8.php";>migration 
guide</a> is available in the PHP Manual. Please
+        consult it for the detailed list of new features and 
backward-incompatible changes.
+      </p>
+    </div>
+  </div>
+</div>
+
+
+
+
+<?php site_footer();
\ No newline at end of file
diff --git a/styles/php8.css b/styles/php8.css
new file mode 100644
index 000000000..557822b66
--- /dev/null
+++ b/styles/php8.css
@@ -0,0 +1,354 @@
+#layout-content:only-child {
+  width: 100% !important;
+}
+
+@media (max-width: 979px) and (min-width: 768px) {
+  .navbar-search {
+    width: 30% !important;
+    max-width: calc(100% - 605px) !important;
+  }
+}
+
+.php8 {
+  vertical-align: middle;
+}
+
+.php8__section {
+  padding: 96px 1.5rem;
+  margin: 0 -1.5rem;
+}
+
+.php8__section_dark {
+  padding-left: calc((100% - (810px - 3rem))/2);
+  padding-right: calc((100% - (810px - 3rem))/2);
+  background-color: #4F5B93;
+  color: #fff;
+}
+
+.php8__section_dark * {
+  color: #fff;
+}
+
+.php8__section_light {
+  background-color: #fff;
+}
+
+@media (max-width: 920px) {
+  .php8__section {
+    padding-left: 1.5rem;
+    padding-right: 1.5rem;
+  }
+}
+
+.php8__section_header {
+  padding-top: 64px;
+  margin-top: -1.5rem;
+  font-family: Helvetica, Arial, sans-serif;
+}
+
+.php8__section_footer {
+  margin-bottom: -1.5rem;
+  font-family: Helvetica, Arial, sans-serif;
+}
+
+.php8__logo {
+  vertical-align: middle;
+}
+
+.php8__logo img {
+  max-width: 90%;
+}
+
+.php8__title {
+  margin-top: 16px;
+  font-size: 60px;
+  font-weight: 900;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.07;
+  letter-spacing: -1.5px;
+}
+
+@media (max-width: 480px) {
+  .php8__title {
+    font-size: 50px;
+  }
+}
+
+.php8__title-text {
+  vertical-align: middle;
+}
+
+.php8__title-img {
+  width: 0.9666666666667em;
+  height: 0.9666666666667em;
+  margin-left: 2px;
+  vertical-align: middle;
+}
+
+.php8__subtitle {
+  margin-top: 48px;
+  font-size: 28px;
+  font-weight: 300;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.43;
+  letter-spacing: normal;
+  text-align: center;
+}
+
+@media (max-width: 480px) {
+  .php8__subtitle {
+    font-size: 24px;
+  }
+}
+
+.php8__h2 {
+  font-size: 31px;
+  font-weight: bold;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.29;
+  letter-spacing: -0.5px;
+  color: #27282c;
+}
+
+.php8__h2::after {
+  display: none;
+}
+
+.php8__h2_margin-top {
+  margin-top: 48px;
+}
+
+.php8__section_dark .php8__h2 {
+  color: #fff;
+}
+
+.php8__button-wrapper {
+  margin-top: 33px;
+}
+
+.php8__button {
+  display: inline-block;
+  padding: 16px 46px;
+  border-radius: 30px;
+  border: none;
+  background-color: #4F5B93;
+  color: #fff !important;
+  text-decoration: none !important;
+  font-size: 20px;
+  font-weight: bold;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.4;
+  letter-spacing: normal;
+  text-align: center;
+}
+
+@media (max-width: 640px) {
+  .php8__button {
+    padding: 16px 36px;
+  }
+}
+
+.php8__button_light {
+  background-color: #fff !important;
+  color: #27282c !important;
+}
+
+.php8__footer-content {
+  margin-top: 64px;
+  text-align: left;
+  font-size: 15px;
+  font-weight: normal;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.6;
+  letter-spacing: normal;
+}
+
+#layout-content .php8__section_dark  a:link,
+#layout-content .php8__section_dark a:visited {
+  color: #fff;
+  transition: opacity 0.2s;
+}
+
+#layout-content .php8__section_dark a:hover,
+#layout-content .php8__section_dark a:focus {
+  color: #fff;
+  border-color: #fff;
+  opacity: 0.85;
+}
+
+.php8 p:last-child {
+  margin-bottom: 0;
+}
+
+.display-block-lg {
+  display: block;
+}
+.display-none-lg {
+  display: none;
+}
+
+@media (max-width: 1000px) {
+  .display-block-md {
+    display: block;
+  }
+  .display-none-md {
+    display: none;
+  }
+}
+
+@media (max-width: 640px) {
+  .display-block-sm {
+    display: block;
+  }
+  .display-none-sm {
+    display: none;
+  }
+}
+
+.php8__rfc {
+  font-size: 15px;
+  font-weight: normal;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.6;
+  letter-spacing: normal;
+  vertical-align: middle;
+  color: #505c90;
+  border-bottom-color: currentColor;
+}
+
+.php8__compare ~ .php8__compare {
+  margin-top: 58px;
+}
+
+.php8__compare-main {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: stretch;
+  -ms-flex-align: stretch;
+  align-items: stretch;
+  -webkit-box-pack: justify;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+}
+
+@media (max-width: 810px) {
+  .php8__compare-main {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+  }
+}
+
+.php8__compare-block {
+  position: relative;
+  -ms-flex-preferred-size: calc((100% - 68px)/2);
+  flex-basis: calc((100% - 68px)/2);
+  text-align: left;
+}
+
+.php8__compare-label {
+  position: absolute;
+  top: 12px;
+  left: 12px;
+  padding: 6px 16px 4px;
+  border-radius: 4px;
+  font-size: 12px;
+  font-weight: normal;
+  font-stretch: normal;
+  font-style: normal;
+  line-height: 1.33;
+  letter-spacing: normal;
+  text-align: center;
+  color: rgba(39, 40, 44, 0.7);
+  background-color: rgba(39, 40, 44, 0.05);
+}
+
+.php8__compare-label_new {
+  background-color: #505c90;
+  color: #fff;
+}
+
+.php8__code {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+  padding: 50px 76px 38px !important;
+  box-sizing: border-box;
+  margin: 0 !important;
+}
+
+@media (max-width: 1000px) {
+  .php8__code {
+    padding-left: 50px !important;
+    padding-right: 50px !important;
+  }
+}
+
+@media (max-width: 768px) {
+  .php8__code {
+    padding-left: 12px !important;
+    padding-right: 12px !important;
+  }
+}
+
+.php8__compare-arrow {
+  height: 36px;
+  width: 20px;
+  margin: auto;
+  background: url("/images/icon_arrow.svg") scroll no-repeat center center / 
contain transparent;
+}
+
+@media (max-width: 810px) {
+  .php8__compare-arrow {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    transform: rotate(90deg);
+  }
+}
+
+.php8__section ul {
+
+}
+
+.php8__section li ~ li {
+  margin-top: 24px;
+}
+
+.php8__columns {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: justify;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+}
+
+@media (max-width: 768px) {
+  .php8__columns {
+    display: block;
+  }
+}
+
+.php8__column {
+  -ms-flex-preferred-size: calc((100% - 68px)/2);
+  flex-basis: calc((100% - 68px)/2);
+}
+
+@media (max-width: 768px) {
+  .php8__column {
+    width: 100%;
+  }
+}
\ No newline at end of file
diff --git a/styles/theme-base.css b/styles/theme-base.css
index 5a55a0815..fead11a7d 100644
--- a/styles/theme-base.css
+++ b/styles/theme-base.css
@@ -213,6 +213,9 @@ textarea {
   float: none;
   padding: .75rem;
 }
+.navbar .nav > li > a > img {
+  vertical-align: middle;
+}
 @-ms-viewport {
   width: device-width;
 }
-- 
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to