*/ private $baseClass; /** * @var string * @phpstan-var class-string */ private $playerClass; /** * @param string $baseClass * @param string $playerClass * @phpstan-param class-string $baseClass * @phpstan-param class-string $playerClass */ public function __construct(SourceInterface $interface, $baseClass, $playerClass, string $address, int $port){ $this->interface = $interface; $this->address = $address; $this->port = $port; if(!is_a($baseClass, Player::class, true)){ throw new \RuntimeException("Base class $baseClass must extend " . Player::class); } $this->baseClass = $baseClass; if(!is_a($playerClass, Player::class, true)){ throw new \RuntimeException("Class $playerClass must extend " . Player::class); } $this->playerClass = $playerClass; } public function getInterface() : SourceInterface{ return $this->interface; } public function getAddress() : string{ return $this->address; } public function getPort() : int{ return $this->port; } /** * @return string * @phpstan-return class-string */ public function getBaseClass(){ return $this->baseClass; } /** * @param string $class * @phpstan-param class-string $class * * @return void */ public function setBaseClass($class){ if(!is_a($class, $this->baseClass, true)){ throw new \RuntimeException("Base class $class must extend " . $this->baseClass); } $this->baseClass = $class; } /** * @return string * @phpstan-return class-string */ public function getPlayerClass(){ return $this->playerClass; } /** * @param string $class * @phpstan-param class-string $class * * @return void */ public function setPlayerClass($class){ if(!is_a($class, $this->baseClass, true)){ throw new \RuntimeException("Class $class must extend " . $this->baseClass); } $this->playerClass = $class; } }