[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[<?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[<?php -class Rst -{ - public function __construct( RstOptions $options *= null* ) - { - } -}]]></example> -</div> - <div effect="fade-in"> <example inline="2"><![CDATA[<?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[<?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