<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://icontemp.com/wiki/phpprimer/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://icontemp.com/wiki/phpprimer/feed.php">
        <title>PHP Primer for the AI Era - essentials</title>
        <description>A PHP Guide for Humans</description>
        <link>https://icontemp.com/wiki/phpprimer/</link>
        <image rdf:resource="https://icontemp.com/wiki/phpprimer/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-10-08T23:32:50+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:arrays_and_collections&amp;rev=1775350386&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:attributes&amp;rev=1775350226&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:constructor_property_promotion&amp;rev=1775349625&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:enum_keyword&amp;rev=1775349919&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:first_class_callable_syntax&amp;rev=1775349559&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:intersection_types&amp;rev=1775349178&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:match_declarative_branching&amp;rev=1775350142&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:named_arguments&amp;rev=1775349360&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:nullsafe_operator&amp;rev=1775350021&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:objects_dtos&amp;rev=1775350336&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:readonly_classes&amp;rev=1775349690&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:readonly_property&amp;rev=1775349777&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:short_closure_functions&amp;rev=1775349478&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:spread_operator_in_arrays&amp;rev=1775349042&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:start&amp;rev=1775241992&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:types_and_signatures&amp;rev=1775350481&amp;do=diff"/>
                <rdf:li rdf:resource="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:union_types&amp;rev=1775349252&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://icontemp.com/wiki/phpprimer/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>PHP Primer for the AI Era</title>
        <link>https://icontemp.com/wiki/phpprimer/</link>
        <url>https://icontemp.com/wiki/phpprimer/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:arrays_and_collections&amp;rev=1775350386&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:53:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2. Arrays &amp; Collections — PHP’s Most Misunderstood Feature</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:arrays_and_collections&amp;rev=1775350386&amp;do=diff</link>
        <description>2. Arrays &amp; Collections — PHP’s Most Misunderstood Feature

Why this matters

PHP arrays are powerful — and confusing.

We find them in:

	* ordered lists 
simple sequences of values
	* associative maps 
key–value structures with no enforced shape</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:attributes&amp;rev=1775350226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:50:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>4. Attributes — Adding Meaning Without Adding Weight</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:attributes&amp;rev=1775350226&amp;do=diff</link>
        <description>4. Attributes — Adding Meaning Without Adding Weight

Modern PHP gives us a quiet, declarative way to attach structure and intent to our code.

Attributes don’t change behavior by themselves.

They describe behavior 
— and let tools, frameworks, and libraries respond to it.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:constructor_property_promotion&amp;rev=1775349625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:40:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>10. Constructor Property Promotion — Letting Objects Declare Themselves</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:constructor_property_promotion&amp;rev=1775349625&amp;do=diff</link>
        <description>10. Constructor Property Promotion — Letting Objects Declare Themselves

Constructor Property Promotion (CPP) is one of the quiet revolutions of PHP 8.

It removes boilerplate and lets objects declare their shape directly in the constructor signature.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:enum_keyword&amp;rev=1775349919&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:45:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>7. Enums — Giving Meaningful Shape to Known Values</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:enum_keyword&amp;rev=1775349919&amp;do=diff</link>
        <description>7. Enums — Giving Meaningful Shape to Known Values

Enums solve one of the oldest problems in PHP: 
representing a closed set of meaningful values without magic strings or loose integers.
Enums are one of the most expressive additions to modern PHP</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:first_class_callable_syntax&amp;rev=1775349559&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:39:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>11. First‑class Callables — Passing Behavior With Clarity</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:first_class_callable_syntax&amp;rev=1775349559&amp;do=diff</link>
        <description>11. First‑class Callables — Passing Behavior With Clarity

Modern PHP gives us a clean, expressive way to reference methods as values.

First‑class callables let us pass behavior around without strings, arrays, or older callable conventions.

They reflect a broader shift in</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:intersection_types&amp;rev=1775349178&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:32:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>15. Intersection Types — Requiring Multiple Shapes at Once</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:intersection_types&amp;rev=1775349178&amp;do=diff</link>
        <description>15. Intersection Types — Requiring Multiple Shapes at Once

Intersection types let us declare that 

a value must satisfy all of several types at the same time.

They are the opposite of union types: 

instead of “one of these”, 

intersection types</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:match_declarative_branching&amp;rev=1775350142&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:49:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>5. &#039;Match&#039; — Declarative Branching With Shape and Intent</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:match_declarative_branching&amp;rev=1775350142&amp;do=diff</link>
        <description>5. &#039;Match&#039; — Declarative Branching With Shape and Intent

Modern PHP gives us a more expressive way to handle branching logic.

match is not a prettier switch.

It’s a declarative expression that returns a value, enforces completeness, and makes intent explicit.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:named_arguments&amp;rev=1775349360&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:36:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>13. Named Arguments — Making Calls Self‑Documenting</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:named_arguments&amp;rev=1775349360&amp;do=diff</link>
        <description>13. Named Arguments — Making Calls Self‑Documenting

This is another place where AI often gets things subtly wrong.

Named arguments let us call functions and methods with clarity and intention.

Instead of relying on parameter order or remembering what each value means, we can name the arguments directly at the call site.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:nullsafe_operator&amp;rev=1775350021&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:47:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6. Nullsafe — Navigating Uncertainty Without Noise</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:nullsafe_operator&amp;rev=1775350021&amp;do=diff</link>
        <description>6. Nullsafe — Navigating Uncertainty Without Noise

Modern PHP gives us a gentle way to move through nested objects without defensive checks. This is one of the quietest but most expressive features in modern PHP.

The nullsafe operator (?-&gt;) lets us express</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:objects_dtos&amp;rev=1775350336&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:52:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>3. Objects &amp; Data Transfer Objects (DTOs) — Representing Data in Modern PHP</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:objects_dtos&amp;rev=1775350336&amp;do=diff</link>
        <description>3. Objects &amp; Data Transfer Objects (DTOs) — Representing Data in Modern PHP

Why this matters

Modern PHP uses objects not just for behavior, but for clarity of data.

In contrast, AI often generates arrays everywhere — associative arrays for input, output, configuration, responses, and even domain data (see DTO example</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:readonly_classes&amp;rev=1775349690&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:41:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>9. Readonly Classes — Declaring Immutable Objects With Intention</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:readonly_classes&amp;rev=1775349690&amp;do=diff</link>
        <description>9. Readonly Classes — Declaring Immutable Objects With Intention

Readonly classes extend the idea of immutability from individual properties to the entire object.

They let us express that an object is a value 

— something defined entirely by its construction and never changed afterward.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:readonly_property&amp;rev=1775349777&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:42:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>8. Readonly Properties — Making Intentional Immutability Visible</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:readonly_property&amp;rev=1775349777&amp;do=diff</link>
        <description>8. Readonly Properties — Making Intentional Immutability Visible

Modern PHP gives us a simple, expressive way to declare that 
a property will never change after construction.

readonly is not about restriction 
— it’s about clarity.

It lets us express</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:short_closure_functions&amp;rev=1775349478&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:37:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>12. Short Closures (fn) — Small Functions With Clear Intent</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:short_closure_functions&amp;rev=1775349478&amp;do=diff</link>
        <description>12. Short Closures (fn) — Small Functions With Clear Intent

Short closures give us a concise way to express small, 

single‑expression functions.
They reduce ceremony and make intent visible 

without the weight of full closure syntax.

They reflect a broader shift in modern PHP:</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:spread_operator_in_arrays&amp;rev=1775349042&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:30:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>16. Spread Operator in Arrays — Composing Structure With Ease</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:spread_operator_in_arrays&amp;rev=1775349042&amp;do=diff</link>
        <description>16. Spread Operator in Arrays — Composing Structure With Ease

The spread operator (...) lets us merge arrays 

and unpack values with clarity and intention.

It removes boilerplate and makes array composition feel natural and expressive.

It reflects a broader shift in modern PHP:</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:start&amp;rev=1775241992&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-03T18:46:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Modern PHP Essentials</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:start&amp;rev=1775241992&amp;do=diff</link>
        <description>Modern PHP Essentials

Modern PHP’s core language features — the tools you use every day. 

These pages focus on clarity, shape, and the practical constructs that define PHP 8+.

 Please sort A-Z for intended reading sequence.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:types_and_signatures&amp;rev=1775350481&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:54:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>1. Types &amp; Signatures — The Shape of Modern PHP</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:types_and_signatures&amp;rev=1775350481&amp;do=diff</link>
        <description>1. Types &amp; Signatures — The Shape of Modern PHP

Why this matters

Modern PHP is typed, 

but not statically like Rust or Go, 

and not loosely dynamic like early PHP.

— it lives between the two: 

Modern PHP is a language where 
types clarify intent, reduce mistakes, and support architectural thinking.</description>
    </item>
    <item rdf:about="https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:union_types&amp;rev=1775349252&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-05T00:34:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>14. Union Types — Expressing Multiple Valid Shapes With Clarity</title>
        <link>https://icontemp.com/wiki/phpprimer/doku.php?id=essentials:union_types&amp;rev=1775349252&amp;do=diff</link>
        <description>14. Union Types — Expressing Multiple Valid Shapes With Clarity

Union types let us declare that 

a value may take one of several specific types.

Instead of relying on documentation, comments, or guesswork, 

the type system itself expresses the allowed shapes</description>
    </item>
</rdf:RDF>
