getName($name, $producer); $snowflake = Snowflake::app(); if (!$snowflake->has($producerName)) { return $snowflake->set($producerName, $this->definer($name, $producer)); } else { return $snowflake->get($producerName); } } /** * @param string $name * @param string|null $host * @return Client * @throws Exception */ public function consumer(string $name, string $host = null): Client { return $this->getClient($name, $host); } /** * @param $name * @param $producer * @return array */ #[ArrayShape(['class' => "string", 'service' => "", 'config' => ""])] private function definer($name, $producer): array { return ['class' => Client::class, 'service' => $name, 'config' => $producer]; } /** * @param $name * @return Client|bool * @throws Exception */ public function __get($name): Client|bool { return $this->get($name); // TODO: Change the autogenerated stub } /** * @param $name * @param $config * @return string */ private function getName($name, $config): string { return 'rpc.client.' . $name . '.' . $config['host']; } }