1313
1414namespace Chevere \xrDebug \PHP ;
1515
16- use Chevere \Filesystem \Interfaces \DirectoryInterface ;
1716use Chevere \xrDebug \PHP \Interfaces \ClientInterface ;
1817use Chevere \xrDebug \PHP \Interfaces \XrInterface ;
1918use phpseclib3 \Crypt \EC \PrivateKey ;
2019use phpseclib3 \Crypt \PublicKeyLoader ;
2120use Throwable ;
22- use function Chevere \Filesystem \filePhpReturnForPath ;
21+ use function Chevere \Parameter \arrayp ;
22+ use function Chevere \Parameter \bool ;
23+ use function Chevere \Parameter \int ;
24+ use function Chevere \Parameter \string ;
2325
2426final class Xr implements XrInterface
2527{
2628 private ClientInterface $ client ;
2729
28- private DirectoryInterface $ directory ;
30+ private string $ directory ;
2931
3032 private string $ configFile = '' ;
3133
@@ -46,7 +48,7 @@ public function __construct(
4648 $ this ->setClient ();
4749 }
4850
49- public function withConfigDir (DirectoryInterface $ config ): XrInterface
51+ public function withConfigDir (string $ config ): XrInterface
5052 {
5153 $ new = clone $ this ;
5254 $ new ->directory = $ config ;
@@ -99,9 +101,17 @@ public function key(): string
99101
100102 private function setConfigFromFile (): void
101103 {
104+ $ arrayp = arrayp (
105+ isEnabled: bool (),
106+ isHttps: bool (),
107+ host: string (),
108+ port: int (),
109+ key: string (),
110+ )->withMakeOptional ();
111+
102112 try {
103113 /** @var array<string, string|int|bool> $return */
104- $ return = filePhpReturnForPath ( $ this ->configFile )-> cast ()-> array ( );
114+ $ return = $ arrayp ( require $ this ->configFile );
105115 foreach (static ::CONFIG_NAMES as $ prop ) {
106116 // @phpstan-ignore-next-line
107117 $ this ->{$ prop } = $ return [$ prop ] ?? $ this ->{$ prop };
@@ -116,7 +126,7 @@ private function setConfigFromFile(): void
116126
117127 private function getConfigFile (): string
118128 {
119- $ configDirectory = $ this ->directory -> path ()-> __toString () ;
129+ $ configDirectory = $ this ->directory ;
120130 while (is_dir ($ configDirectory )) {
121131 foreach ($ this ->configNames as $ configName ) {
122132 $ configFullPath = $ configDirectory . $ configName ;
0 commit comments