[PRES] [presentations] master: PHPConnect talk
| From: | Derick Rethans | Date: | Wed, 02 Sep 2026 11:19:13 +0000 |
| Subject: | [PRES] [presentations] master: PHPConnect talk | ||
| Groups: | php.pres | ||
| Request: | Send a blank email to pres+get-2515@lists.php.net to get a copy of this message | ||
Author: Derick Rethans (derickr)
Date: 2026-09-02T12:19:06+01:00
Commit: https://github.com/php/presentations/commit/932967bf53be0078c86489a3f2793655c56b68f0
Raw diff: https://github.com/php/presentations/commit/932967bf53be0078c86489a3f2793655c56b68f0.diff
PHPConnect talk
Changed paths:
A slides/internals/bytecode1½.xml
A slides/internals/php_foundation.png
A slides/internals/scanner-example.xml
M slides/internals/bytecode1.xml
M slides/internals/parse-state-machine.xml
M slides/internals/scanner-ast2.xml
M slides/mongodb/me.xml
M slides/mongodb/resources.xml
M templates/default/qrcode.ezt
Diff:
diff --git a/slides/internals/bytecode1.xml b/slides/internals/bytecode1.xml
index dfc56222..10c120cd 100644
--- a/slides/internals/bytecode1.xml
+++ b/slides/internals/bytecode1.xml
@@ -1,33 +1,35 @@
<slide>
<title>AST is converted to bytecode</title>
+<blurb>AST:</blurb>
<example class="medium" inline="1">
1: AST_METHOD
flags: MODIFIER_PUBLIC (256)
name: |00dd00|__construct|
params: AST_PARAM_LIST
0: AST_PARAM
- name: |0000dd|"name"|
+ name: |0000dd|"value"|
stmts: AST_STMT_LIST
0: |dd00dd|AST_ASSIGN|
var: |00dddd|AST_PROP|
expr: AST_VAR
name: |00dddd|"this"|
- prop: |00dddd|"name"|
+ prop: |00dddd|"property"|
expr: AST_VAR
- name: |0000dd|"name"|
+ name: |0000dd|"value"|
</example>
-<br/>
+
+<blurb>Opcodes:</blurb>
<example class="medium" inline="1">
-compiled vars: |0000dd|!0 = $name|
-line #* E I O op fetch ext return operands
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 8 0 E > EXT_NOP
- 1 RECV |0000dd|!0|
- 10 2 EXT_STMT
- 3 |dd00dd|ASSIGN||00dddd|_OBJ|
|00dddd|'name'|
- 4 |dd00dd|OP_DATA| |0000dd|!0|
- 11 5 EXT_STMT
- 6 > RETURN null
+compiled vars: |0000dd|!0 = $value|
+line #* E I O op return operands
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ 8 0 E > EXT_NOP
+ 1 RECV |0000dd|!0|
+ 10 2 EXT_STMT
+ 3 |dd00dd|ASSIGN||00dddd|_OBJ| |00dddd|'property'|
+ 4 |dd00dd|OP_DATA| |0000dd|!0|
+ 11 5 EXT_STMT
+ 6 > RETURN null
</example>
</slide>
diff --git "a/slides/internals/bytecode1\302\275.xml"
"b/slides/internals/bytecode1\302\275.xml"
new file mode 100644
index 00000000..97d33cc8
--- /dev/null
+++ "b/slides/internals/bytecode1\302\275.xml"
@@ -0,0 +1,28 @@
+<slide>
+<title>AST is converted to bytecode (with tricks)</title>
+
+<blurb>Code:</blurb>
+<example inline="1"><![CDATA[<?php
+*$a* |00cc00|=| |0000cc|8| |cc00cc|+| |0000cc|42|;
+]]></example>
+
+<blurb>AST:</blurb>
+<example inline="1">0: |00cc00|AST_ASSIGN|
+ var: *AST_VAR*
+ name: "a"
+ expr: AST_BINARY_OP
+ flags: |cc00cc|BINARY_ADD (1)|
+ left: |0000cc|8|
+ right: |0000cc|42|
+</example>
+
+<blurb>Opcodes:</blurb>
+<example inline="1">
+compiled vars: *!0 = $a*
+line #* E I O op operands
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ 2 0 E > EXT_STMT
+ 1 |00cc00|ASSIGN| *!0*, 50
+ 3 2 > RETURN 1
+</example>
+</slide>
diff --git a/slides/internals/parse-state-machine.xml b/slides/internals/parse-state-machine.xml
index 4db6cced..1da9c3ec 100644
--- a/slides/internals/parse-state-machine.xml
+++ b/slides/internals/parse-state-machine.xml
@@ -5,10 +5,10 @@
<bullet>It's a big state machine starting with %INITIAL%</bullet>
<bullet>States: %INITIAL%, %ST_IN_SCRIPTING%, %ST_DOUBLE_QUOTES%,
%ST_NOWDOC%…</bullet>
<bullet>Tokens can change the state:
- <example><![CDATA[<INITIAL>"<?php"([ \t]|{NEWLINE}) {
+ <example
inline="1"><![CDATA[<INITIAL>*"<?php"*([ \t]|{NEWLINE}) {
HANDLE_NEWLINE(yytext[yyleng-1]);
BEGIN(ST_IN_SCRIPTING);
- RETURN_TOKEN(T_OPEN_TAG);
+ RETURN_TOKEN(*T_OPEN_TAG*);
} ]]></example>
</bullet>
<bullet>No *meaning* is given to these tokens</bullet>
diff --git a/slides/internals/php_foundation.png b/slides/internals/php_foundation.png
new file mode 100644
index 00000000..27bcfa84
Binary files /dev/null and b/slides/internals/php_foundation.png differ
diff --git a/slides/internals/scanner-ast2.xml b/slides/internals/scanner-ast2.xml
index 5f366687..db1c1040 100644
--- a/slides/internals/scanner-ast2.xml
+++ b/slides/internals/scanner-ast2.xml
@@ -55,9 +55,9 @@
<div effect="fade-in">
<example inline="1">
-|0000dd|public| function |00dd00|__construct|( |0000dd|$name| )
+|0000dd|public| function |00dd00|__construct|( |0000dd|$value| )
{
- |00dddd|$this->name| |dd00dd|=| |ff0000|$name|
+ |00dddd|$this->property| |dd00dd|=| |ff0000|$value|
}
</example>
@@ -71,7 +71,7 @@
0: AST_PARAM
flags: 0
type: null
- name: |0000dd|"name"|
+ name: |0000dd|"value"|
default: null
uses: null
stmts: AST_STMT_LIST
@@ -79,9 +79,9 @@
var: |00dddd|AST_PROP|
expr: AST_VAR
name: |00dddd|"this"|
- prop: |00dddd|"name"|
+ prop: |00dddd|"property"|
expr: AST_VAR
- name: |ff0000|"name"|
+ name: |ff0000|"value"|
returnType: null
</example>
</div>
diff --git a/slides/internals/scanner-example.xml b/slides/internals/scanner-example.xml
new file mode 100644
index 00000000..2ae41ff9
--- /dev/null
+++ b/slides/internals/scanner-example.xml
@@ -0,0 +1,36 @@
+<slide>
+<title>Example Matching</title>
+
+<div effect="fade-out">
+<blurb>Code:</blurb>
+<example inline="1"><![CDATA[*$a* |00cc00|=| |0000cc|8| |cc00cc|+|
|0000cc|42|;]]></example>
+</div>
+
+<blurb>Tokens:</blurb>
+<example inline="1"><![CDATA[*T_VARIABLE $a* |cccccc|T_WS|
|00cc00|"="| |cccccc|T_WS| |0000cc|T_LNUMBER 8| |cccccc|T_WS| |cc00cc|"+"|
|cccccc|T_WS| |0000cc|T_LNUMBER 42| ";" ]]></example>
+
+<blurb>Rules:</blurb>
+<example inline="1"><![CDATA[
+variable:
+ *T_VARIABLE* { $$ = zend_ast_create(*ZEND_AST_VAR*, $1); }
+scalar:
+ |0000cc|T_LNUMBER| { $$ = $1; }
+expr:
+ | variable |00cc00|'='| expr { $$ = zend_ast_create(|00cc00|ZEND_AST_ASSIGN|,
$1, $3); }
+ | expr |cc00cc|'+'| expr { $$ = zend_ast_create_binary_op(|cc00cc|ZEND_ADD|,
$1, $3); }
+ | scalar { $$ = $1; }]]>
+</example>
+
+<div effect="fade-in">
+<blurb>AST:</blurb>
+<example inline="1">0: |00cc00|AST_ASSIGN|
+ var: *AST_VAR*
+ name: "a"
+ expr: AST_BINARY_OP
+ flags: |cc00cc|BINARY_ADD (1)|
+ left: |0000cc|8|
+ right: |0000cc|42|
+</example>
+</div>
+
+</slide>
diff --git a/slides/mongodb/me.xml b/slides/mongodb/me.xml
index 45e75e95..e6286020 100644
--- a/slides/mongodb/me.xml
+++ b/slides/mongodb/me.xml
@@ -2,16 +2,18 @@
<slide>
<title>About Me</title>
-<break lines="7"/>
+ <image filename="../xdebug/derick-new-512x512.png" align="right"
zoom="0.75" pdf-float="1" x-offset="21.3" y-offset="10"
pdf-scale="0.25"/>
+ <break lines="6"/>
+ <blurb>Derick Rethans</blurb>
-<image filename="../xdebug/derick-new-512x512.png" align="right"
pdf-float="1" x-offset="21.3" y-offset="10"
pdf-scale="0.25"/>
+ <image filename="../internals/php_foundation.png" align="right"
zoom="0.75" pdf-float="1" x-offset="21.3" y-offset="10"
pdf-scale="0.25"/>
- <blurb>Derick Rethans</blurb>
<list>
- <bullet>I'm European, living in London</bullet>
<bullet>*PHP Foundation*</bullet>
<bullet>*Xdebug* & PHP's Date/Time support</bullet>
+ <bullet>*Infrastructure*</bullet>
<bullet>I ♥🌍 maps, I ♥🍺 beer, I ♥🥃 whisky</bullet>
<bullet>mastodon: :-:mastodon:-:</bullet>
</list>
+
</slide>
diff --git a/slides/mongodb/resources.xml b/slides/mongodb/resources.xml
index 16da908a..8bec2721 100644
--- a/slides/mongodb/resources.xml
+++ b/slides/mongodb/resources.xml
@@ -1,7 +1,8 @@
<slide type="thanks">
+<blurb class="big-centre" >Thank you!</blurb>
<break/>
-<qrcode>http://derickrethans.nl/talks/:-:talk_id:-:</qrcode>
-<break/>
+<qrcode size="512">https://derickrethans.nl/talks/:-:talk_id:-:</qrcode>
+<break lines="2"/>
<blurb align="center" class="pres-url-small">*Slides &
Resources*<br/>:-:url:-:</blurb>
-<blurb align="center"
class="pres-url-small">*Contact*<br/>:-:email:-:—:-:mastodon:-:</blurb>
+<blurb align="center"
class="pres-url-small">*Contact*<br/>~E-mail:~ :-:email:-:<br/>~Mastodon:~
:-:mastodon:-:</blurb>
</slide>
diff --git a/templates/default/qrcode.ezt b/templates/default/qrcode.ezt
index 78368239..702d193c 100644
--- a/templates/default/qrcode.ezt
+++ b/templates/default/qrcode.ezt
@@ -1,6 +1,9 @@
{use $node, $pres}
+{var $size = get_attribute( $node, 'size' )}
+{if !$size}{$size = 290}{/if}
{if str_trim( format_text( $pres, $node->nodeValue ) ) == ''}
-<img src="/qrcode.php?d=http://derickrethans.nl/talks.html"/>
+<img style="width: {$size}px; height: {$size}px" src="/qrcode.php?d=http://derickrethans.nl/talks.html"/>
{else}
-<img src="/qrcode.php?d={raw format_text( $pres, $node->nodeValue )}"/>
+<img style="width: {$size}px; height: {$size}px" src="/qrcode.php?d={raw
format_text( $pres, $node->nodeValue )}"/>
{/if}
+</div>