Возможно, вы можете реализовать что-то вроде замороженного состояния, и если класс заморожен, его нельзя изменить:
class Test
{
private $variable;
private $frozen = false;
public function freeze() {
$this->frozen = true;
}
public function setVariable($value) {
if ($this->frozen)
throw new Exception("...");
$this->variable = $value;
}
}