[PRES] [presentations] master: Den Haag PHP talk

[email protected] (Derick Rethans) Tue, 19 Nov 2024 11:19:54 +0000
Newsgroups php.pres
Message-ID <[email protected]>
Author: Derick Rethans (derickr)
Date: 2024-11-19T12:15:21+01:00

Commit: https://github.com/php/presentations/commit/970dd352dc3f567e8b1eeb5a68080bedbfa9f58d
Raw diff: https://github.com/php/presentations/commit/970dd352dc3f567e8b1eeb5a68080bedbfa9f58d.diff

Den Haag PHP talk

Changed paths:
  A  php-denhaag24.xml
  A  slides/internals/timeline-2024-11.png
  M  slides/internals/php84-deprecate-implicitly-nullable-types.xml
  M  slides/internals/php84-pdo-subclass.xml
  M  slides/internals/php84-property-hooks-example-1.xml
  M  slides/internals/php84-property-hooks-example-3.xml
  M  slides/internals/php84-property-hooks-example-4.xml
  M  slides/internals/php84-release-cycle.xml


Diff:

diff --git a/php-denhaag24.xml b/php-denhaag24.xml
new file mode 100644
index 00000000..8db51272
--- /dev/null
+++ b/php-denhaag24.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presentation css="derick.css">
+<topic>PHP</topic>
+<title>What's New in PHP 8.4!</title>
+<event>Den Haag PHP</event>
+<location>'s-Gravenhage, The Netherlands</location>
+<date>Nov 21st, 2024</date>
+<speaker>Derick Rethans</speaker>
+<email>[email protected]</email>
+<twitter>derickr</twitter>
+<mastodon>@[email protected]</mastodon>
+<url>https://derickrethans.nl/talks/php-denhaag24</url>
+<joindin></joindin>
+<slide>slides/xdebug/title.xml</slide>
+<slide>slides/mongodb/me.xml</slide>
+
+
+Syntax:
+
+https://wiki.php.net/rfc/asymmetric-visibility-v2
+<slide>slides/internals/php84-asymmetric-visibility.xml</slide>
+<slide>slides/internals/php84-asymmetric-visibility-2.xml</slide>
+
+https://wiki.php.net/rfc/property-hooks
+<slide>slides/internals/php84-property-hooks.xml</slide>
+<slide>slides/internals/php84-property-hooks-example-1.xml</slide>
+<slide>slides/internals/php84-property-hooks-example-2.xml</slide>
+<slide>slides/internals/php84-property-hooks-example-3.xml</slide>
+<slide>slides/internals/php84-property-hooks-example-4.xml</slide>
+
+https://wiki.php.net/rfc/new_without_parentheses
+<slide>slides/internals/php84-new-without-parentheses.xml</slide>
+
+
+
+Major additions:
+
+https://wiki.php.net/rfc/domdocument_html5_parser
+<slide>slides/internals/php84-dom-html5.xml</slide>
+
+<!--
+https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl
+<sl ide>slides/internals/php84-dom-callbacks.xml</slide>
+-->
+
+https://wiki.php.net/rfc/lazy-objects
+<slide>slides/internals/php84-lazy-objects.xml</slide>
+
+
+https://wiki.php.net/rfc/jit-ir
+<slide>slides/internals/php80-jit.xml</slide>
+<slide>slides/internals/php84-jit.xml</slide>
+
+Minor additions:
+
+https://wiki.php.net/rfc/deprecated_attribute
+<slide>slides/internals/php84-deprecated-attribute.xml</slide>
+
+https://wiki.php.net/rfc/pdo_driver_specific_subclasses
+<slide>slides/internals/php84-pdo-subclass.xml</slide>
+
+https://wiki.php.net/rfc/new_rounding_modes_to_round_function
+<slide>slides/internals/php84-round-modes.xml</slide>
+
+https://wiki.php.net/rfc/bcrypt_cost_2023
+<slide>slides/internals/php84-bcrypt-cost.xml</slide>
+
+https://wiki.php.net/rfc/grapheme_str_split
+<slide>slides/internals/php84-grapheme-str-split.xml</slide>
+<slide>slides/internals/php84-grapheme-str-split-2.xml</slide>
+<slide>slides/internals/php84-grapheme-str-split-3.xml</slide>
+
+Deprecations:
+
+https://wiki.php.net/rfc/deprecate-implicitly-nullable-types
+<slide>slides/internals/php84-deprecate-implicitly-nullable-types.xml</slide>
+
+https://wiki.php.net/rfc/unbundle_imap_pspell_oci8
+
+
+Policy:
+
+https://wiki.php.net/rfc/policy-repository
+<slide>slides/internals/php84-policy-repository.xml</slide>
+
+https://wiki.php.net/rfc/release_cycle_update
+<slide>slides/internals/php84-release-cycle.xml</slide>
+
+<slide>slides/internals/questions-new.xml</slide>
+<slide>slides/xdebug/resources.xml</slide>
+
+</presentation>
diff --git a/slides/internals/php84-deprecate-implicitly-nullable-types.xml b/slides/internals/php84-deprecate-implicitly-nullable-types.xml
index 7f448f17..8918dbe2 100644
--- a/slides/internals/php84-deprecate-implicitly-nullable-types.xml
+++ b/slides/internals/php84-deprecate-implicitly-nullable-types.xml
@@ -1,10 +1,10 @@
 <slide>
 <title>PHP 8.4: Deprecate Implicit Nullability</title>
 
-<example><![CDATA[<?php
+<example inline="2"><![CDATA[&lt;?php
 class Rst
 {
-    public function __construct( RstOptions $options = null )
+    public function __construct( RstOptions $options *= null* )
     {
     }
 }]]></example>
@@ -15,16 +15,6 @@ Deprecated: Rst::__construct(): Implicitly marking parameter $options as nullabl
 </example>
 </div>
 
-<div effect="fade-in-out">
-<example inline="2"><![CDATA[&lt;?php
-class Rst
-{
-    public function __construct( RstOptions $options *= null* )
-    {
-    }
-}]]></example>
-</div>
-
 <div effect="fade-in">
 <example inline="2"><![CDATA[&lt;?php
 class Rst
diff --git a/slides/internals/php84-pdo-subclass.xml b/slides/internals/php84-pdo-subclass.xml
index ace89c94..fe1d7094 100644
--- a/slides/internals/php84-pdo-subclass.xml
+++ b/slides/internals/php84-pdo-subclass.xml
@@ -1,19 +1,22 @@
 <slide>
 <title>PHP 8.4: PDO Subclasses</title>
 
-<blurb>Each PDO driver now has it's own class, containing driver specific elements</blurb>
-<break lines="2"/>
+<blurb>Each PDO driver now has it's own class, extending %\PDO%, containing (a copy of) driver specific elements</blurb>
+<break/>
 
-<blurb>%PDODBLib%, %PDOFirebird%, %PDOOCI%, %PDOODBC% are just children, without any changes.</blurb>
-<blurb>%PDOMySQL% has %getWarningCount()% defined on it</blurb>
-<blurb>%PDOPgSQL% and %PDOSQLite% have a whole bunch of constants and methods</blurb>
-<break lines="2"/>
+<list>
+<bullet>%Pdo\Dblib%, %Pdo\Firebird%, and %Pdo\Odbc% are just children, without any changes.</bullet>
+<bullet>%Pdo\Mysql% has %getWarningCount()% defined on it</bullet>
+<bullet>%Pdo\Pgsql% and %Pdo\Sqlite% have a whole bunch of constants and methods</bullet>
+<bullet>%pdo_oci% has been moved to PECL: %https://github.com/php/pecl-database-pdo_oci%</bullet>
+</list>
+<break/>
 
 <blurb>A new factory method, %PDO::connect% returns an object representing one of the new subclasses:</blurb>
 
-<example><![CDATA[<?php
+<example inline="2"><![CDATA[&lt;?php
 $db = PDO::connect('sqlite::memory:');
-if (!$db instanceof PDOSQLite) {
-    /* ERROR ZONE */
+if (!$db instanceof Pdo\Sqlite) {
+    *// ERROR ZONE*
 }]]></example>
 </slide>
diff --git a/slides/internals/php84-property-hooks-example-1.xml b/slides/internals/php84-property-hooks-example-1.xml
index 4d2e0bb7..b9aa8841 100644
--- a/slides/internals/php84-property-hooks-example-1.xml
+++ b/slides/internals/php84-property-hooks-example-1.xml
@@ -23,18 +23,7 @@ class ezcMailImapTransportOptions
         }
     }
 
-    public function __isset( $propertyName )
-    {
-        return array_key_exists( $propertyName, $this->properties );
-    }
-
-    public function __get( $propertyName )
-    {
-        if ( $this->__isset( $propertyName ) === true ) {
-            return $this->properties[$propertyName];
-        }
-        throw new ezcBasePropertyNotFoundException( $propertyName );
-    }
+    // …
 }
 ?>]]></example>
 
diff --git a/slides/internals/php84-property-hooks-example-3.xml b/slides/internals/php84-property-hooks-example-3.xml
index e953cdc6..c5c4f696 100644
--- a/slides/internals/php84-property-hooks-example-3.xml
+++ b/slides/internals/php84-property-hooks-example-3.xml
@@ -23,18 +23,7 @@ class ezcMailImapTransportOptions
         }
     }
 
-    public function __isset( $propertyName )
-    {
-        return array_key_exists( $propertyName, $this->properties );
-    }
-
-    public function __get( $propertyName )
-    {
-        if ( $this->__isset( $propertyName ) === true ) {
-            return $this->properties[$propertyName];
-        }
-        throw new ezcBasePropertyNotFoundException( $propertyName );
-    }
+    // …
 }
 ?>]]></example>
 
diff --git a/slides/internals/php84-property-hooks-example-4.xml b/slides/internals/php84-property-hooks-example-4.xml
index be7ae6f5..8f4120c4 100644
--- a/slides/internals/php84-property-hooks-example-4.xml
+++ b/slides/internals/php84-property-hooks-example-4.xml
@@ -7,7 +7,7 @@ class ezcMailImapTransportOptions
     public int $listLimit {
         set {
             if ( $value < 0 ) {
-                throw new ValueError( "listLimit was set to <{$value}>, but must be >= 0" );
+                throw new ValueError( "listLimit set to <{$value}>, but must be >= 0" );
             }
         }
     }
diff --git a/slides/internals/php84-release-cycle.xml b/slides/internals/php84-release-cycle.xml
index f67e82aa..6f6d4914 100644
--- a/slides/internals/php84-release-cycle.xml
+++ b/slides/internals/php84-release-cycle.xml
@@ -29,7 +29,7 @@
 <break lines="2"/>
 <blurb class="center">Effective Immediately</blurb>
 <break/>
-<image filename="timeline-2024-05.png"/>
+<image filename="timeline-2024-11.png"/>
 </div>
 
 </slide>
diff --git a/slides/internals/timeline-2024-11.png b/slides/internals/timeline-2024-11.png
new file mode 100644
index 00000000..ec002fd3
Binary files /dev/null and b/slides/internals/timeline-2024-11.png differ