A getter method exposes a private value without exposing direct writes.

controlled read The object can keep its stored value private while still returning a scalar value.

Getter Method

start
getter_method.php
Replay: real traced execution (multi-file project)
<?php
class Account
{
    public function __construct(private int $balance)
    {
    }

    public function balance(): int
    {
        return $this->balance;
    }
}

$start = 20;
$balance = (new Account($start))->balance();

echo "start=" . $start . "\n";
echo "balance=" . $balance . "\n";
<?php
class Account
{
    public function __construct(private int $balance)
    {
    }

    public function balance(): int
    {
        return $this->balance;
    }
}

$start = 5;
$balance = (new Account($start))->balance();

echo "start=" . $start . "\n";
echo "balance=" . $balance . "\n";
<?php
class Account
{
    public function __construct(private int $balance)
    {
    }

    public function balance(): int
    {
        return $this->balance;
    }
}

$start = 50;
$balance = (new Account($start))->balance();

echo "start=" . $start . "\n";
echo "balance=" . $balance . "\n";
  1. $start ← 20

    14$start→ 20 = 20; //@start=5, 5015$balance = (new Account($start20))->balance();
  2. public function __construct(private int $balance)

    3{4    public function __construct(private int $balance20)5    {6    }
  3. public function balance(): int

    8public function balance(): int9{10    return $this->balance20;11}
  4. $balance ← 20

    14$start = 20; //@start=5, 5015$balance→ 20 = (new Account($start20))->balance();1617echo "start=" . $start20 . "\n";18echo "balance=" . $balance20 . "\n";
    outputstart=20
    balance=20
  1. $start ← 5

    14$start→ 5 = 5;15$balance = (new Account($start5))->balance();
  2. public function __construct(private int $balance)

    3{4    public function __construct(private int $balance5)5    {6    }
  3. public function balance(): int

    8public function balance(): int9{10    return $this->balance5;11}
  4. $balance ← 5

    14$start = 5;15$balance→ 5 = (new Account($start5))->balance();1617echo "start=" . $start5 . "\n";18echo "balance=" . $balance5 . "\n";
    outputstart=5
    balance=5
  1. $start ← 50

    14$start→ 50 = 50;15$balance = (new Account($start50))->balance();
  2. public function __construct(private int $balance)

    3{4    public function __construct(private int $balance50)5    {6    }
  3. public function balance(): int

    8public function balance(): int9{10    return $this->balance50;11}
  4. $balance ← 50

    14$start = 50;15$balance→ 50 = (new Account($start50))->balance();1617echo "start=" . $start50 . "\n";18echo "balance=" . $balance50 . "\n";
    outputstart=50
    balance=50