immutable
1.0.0
Library can be installed into any PHP application:
Composer
dependency manager$ composer require phpfn/immutable
In order to access library make sure to include vendor/autoload.php
in your file.
<?php
require __DIR__ . '/vendor/autoload.php';
To ensure immunity of objects, you just need to wrap any code of your method in a closure.
Mutable object example:
class Example
{
private int $value = 42;
public function update(int $newValue): self
{
$this->value = $newValue;
return $this;
}
}
Making it immutable:
class Example
{
private int $value = 42;
// Sample #1 (PHP 7.4+)
public function with(int $newValue): self
{
return immutable(fn () => $this->value = $newValue);
}
}
That`s all!