A public property can be read and changed directly by code that has the object.

direct access Public properties are simple, but every caller can change them.

Public Property

name
public_property.php
Replay: real traced execution (multi-file project)
<?php
class Badge
{
    public string $name = "guest";
}

$name = "Ada";
$badge = new Badge();
$badge->name = $name;
$label = "badge:" . $badge->name;

echo "name=" . $badge->name . "\n";
echo "label=" . $label . "\n";
<?php
class Badge
{
    public string $name = "guest";
}

$name = "Grace";
$badge = new Badge();
$badge->name = $name;
$label = "badge:" . $badge->name;

echo "name=" . $badge->name . "\n";
echo "label=" . $label . "\n";
<?php
class Badge
{
    public string $name = "guest";
}

$name = "Rasmus";
$badge = new Badge();
$badge->name = $name;
$label = "badge:" . $badge->name;

echo "name=" . $badge->name . "\n";
echo "label=" . $label . "\n";
  1. $name ← Ada, $badge ← Badge, $badge->name ← Ada, $label ← badge:Ada

    7$name→ Ada = "Ada"; //@name="Grace", "Rasmus"8$badge→ Badge = new Badge();9$badge->name→ Ada = $nameAda;10$label→ badge:Ada = "badge:" . $badge->nameAda;1112echo "name=" . $badge->nameAda . "\n";13echo "label=" . $labelbadge:Ada . "\n";
    outputname=Ada
    label=badge:Ada
  1. $name ← Grace, $badge ← Badge, $badge->name ← Grace, $label ← badge:Grace

    7$name→ Grace = "Grace";8$badge→ Badge = new Badge();9$badge->name→ Grace = $nameGrace;10$label→ badge:Grace = "badge:" . $badge->nameGrace;1112echo "name=" . $badge->nameGrace . "\n";13echo "label=" . $labelbadge:Grace . "\n";
    outputname=Grace
    label=badge:Grace
  1. $name ← Rasmus, $badge ← Badge, $badge->name ← Rasmus, $label ← badge:Rasmus

    7$name→ Rasmus = "Rasmus";8$badge→ Badge = new Badge();9$badge->name→ Rasmus = $nameRasmus;10$label→ badge:Rasmus = "badge:" . $badge->nameRasmus;1112echo "name=" . $badge->nameRasmus . "\n";13echo "label=" . $labelbadge:Rasmus . "\n";
    outputname=Rasmus
    label=badge:Rasmus