Почему значения всех свойств класса «затираются» в конструкторе?
У вас ошибка
class Decoder{ 
    private $inputStr; 
    private $pos; 
    private $out; 
    private $length; 
     
    public function __construct(string $str) {
        $this->inputStr = $str;        
        $this->pos = 0; // Было $this->$pos
        $this->out = ''; // Было $this->$out
        $this->length = mb_strlen($str); // Было $this->$length
    }   
    public function decode(): string {
        return $this->out; // // Было $this->$out
    }    
}

В вашем случае $this->$length = mb_strlen($str);  => $this->null = mb_strlen($str);
Таким образом return $this->$out; => return $this->null // 6
включите вывод ошибок. у вас как минимум неверное обращение к свойствам (использование $ в имени).