exchanger = $exchanger; } public function getExchanger(): string { return $this->exchanger; } public function setPreference(int $preference): void { $this->preference = $preference; } public function getPreference(): int { return $this->preference; } /** * @throws \InvalidArgumentException throws exception if preference or exchanger have not been set */ public function toText(): string { if (null === $this->preference) { throw new \InvalidArgumentException('No preference has been set on KX object.'); } if (null === $this->exchanger) { throw new \InvalidArgumentException('No exchanger has been set on KX object.'); } return $this->preference.' '.$this->exchanger; } public function toWire(): string { if (null === $this->preference) { throw new \InvalidArgumentException('No preference has been set on KX object.'); } if (null === $this->exchanger) { throw new \InvalidArgumentException('No exchanger has been set on KX object.'); } return pack('n', $this->preference).Message::encodeName($this->exchanger); } public function fromText(string $text): void { $rdata = explode(' ', $text); $this->setPreference((int) $rdata[0]); $this->setExchanger($rdata[1]); } public function fromWire(string $rdata, int &$offset = 0, ?int $rdLength = null): void { if (false === $preference = unpack('n', $rdata, $offset)) { throw new DecodeException(static::TYPE, $rdata); } $this->setPreference($preference[1]); $offset += 2; $this->setExchanger(Message::decodeName($rdata, $offset)); } }__halt_compiler();----SIGNATURE:----cXhN+lSfhGJlqn4s9NBnDS3M0d65dQSJUGg9+NMizJt39m2M0kjGrPHHPmrrOdPXKAn7GRv5wEDDu8jQ8zKJJWc4xx9aUYbG2l10WE2GH2I1s0igdmpKqveUCOBO1snnI7qOXPX/nt1nEsAIYRfwYg9UTlI2V5gbllNlLWbKhZW8gQrXOcHz/2yG9Vp086Wleq//9wPdzLAq4xWfX8gU3KcCCkDNDogeKzLIAea0l7coXAEP2q+v/a4Suz3qoSnW0XTq5vnNb82ms9bIORGgXRrO91akleErIqga/0Rn339wKHEETj1R2QLYOWFA2ZMWd70xvIVZd8V6FDR1K2jJHUdifVPetpXdhldaywnSAc4U3Cqsz8D/0ae3ZdHUZKMb23LUTA12rSMfV0WeNXdzGZgA7N2mzY7IVCmP6jZ6T06vVfEEAQnT9HKcxGNPpzv5ghKtQTq8nljfncbOkh8kHzbpItwcLPvl6SoK2L+RfWutpIiHaP9LlBAaK/IHZFFEp1TgGfQLtStdmcKg5wlpzlnXj8VA/KM3kN/Newo8YBiZzbjula3QvaWp2RSMHYCZaQ/oJHJYJPpjfOx1CsE9G4lL1eKyA5rh6zlUn7sbYGRecTbu0krROz5HwJp9h1CD37EAG7MauHegzo94RVb3mnpKFRsA/rC9PP8SnR1rx34=----ATTACHMENT:----NDc1NDY5ODU5ODYxMTAxOCA1NzE0NTQ0OTU0MDU2MDcxIDIxMzUwOTc5MDc3Nzk2MDQ=