Visibility and Constructors
Getter Method
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
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";
$start ← 20
14$start→ 20 = 20; //@start=5, 5015$balance = (new Account($start20))->balance();public function __construct(private int $balance)
3{4 public function __construct(private int $balance20)5 {6 }public function balance(): int
8public function balance(): int9{10 return $this->balance20;11}$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
$start ← 5
14$start→ 5 = 5;15$balance = (new Account($start5))->balance();public function __construct(private int $balance)
3{4 public function __construct(private int $balance5)5 {6 }public function balance(): int
8public function balance(): int9{10 return $this->balance5;11}$balance ← 5
14$start = 5;15$balance→ 5 = (new Account($start5))->balance();1617echo "start=" . $start5 . "\n";18echo "balance=" . $balance5 . "\n";outputstart=5 balance=5
$start ← 50
14$start→ 50 = 50;15$balance = (new Account($start50))->balance();public function __construct(private int $balance)
3{4 public function __construct(private int $balance50)5 {6 }public function balance(): int
8public function balance(): int9{10 return $this->balance50;11}$balance ← 50
14$start = 50;15$balance→ 50 = (new Account($start50))->balance();1617echo "start=" . $start50 . "\n";18echo "balance=" . $balance50 . "\n";outputstart=50 balance=50