Добрый день! Локальный проект, задача хранить настройки для доступа к клиентам (их мало, поэтому хочу прописать в коде руками). Имя клиента - Id гугл таблицы Так чтобы я мог обратиться к конкретному имени клиента и получить его ID и другие свойства. Или же перебрать все имена через foreach можно сделать массив: $clients=array('Клиент1'=>['ID таблицы=>'sdfsadfkwwef23', 'Другое свойство'=>'значение'], 'Клиент2'=>['ID таблицы=>'sdfsadfksdf3wwef2343', 'Другое свойство'=>'значение'], . . ); Но мне хочется оформить это как объект, чтобы я мог обращаться таким образом: $clients->Клиент1->IDтаблицы $clients->Клиент2->IDтаблицы $clients->Клиент2->ДругоеСвойство ит.п. например используя $client='Клиент1'; $tableId=$clients->$client->IDтаблицы; Нашел руководство по классам, сделал так: Class Clients{ public $name; public $tableID; } $clients=new Clients; И дальше завис... по такой логике получается надо делать для каждого клиента экземпляр и обращаться к ним: $ClientName1->name $ClientName1->tableID $ClientName2->name и т.п. это бред.. Как сделать чтобы все было в одном объекте и обращатся как я написал: $clients->ИМЯ_Клиента->Свойства клиента Туплю, не понимаю.. помогите плиз, раньше только массивы использовать Еще пробовал заполнить так: $clients=new stdClass(); $clients->Клиент1->TableId='1izUdVdD12S8Vc9fclw7DDx4'; $clients->Клиент2->TableId='1izUdVdD12S8Vc9fclwF-1QaU6ABh5E7DDx4'; Работает, но выдает предупреждение Creating default object from empty value, и кроме того не получается обратиться к нужному клиенту используя строковую переменную как указал выше: $client='Клиент1'; $tableId=$clients->$client->TableId; выводит NUL поэтому спрашиваю как это правильно оформить?
Просто так код лучше выглядит и удобнее обращаться местами; данный момент пока остановился на таком варианте, но бесят предпреждения. Как это правильно, красиво оформить? код settings.php вызывается через консоль с параметром=имя клиента PHP: /**настройки клиентов**// $clients=new stdClass(); //статический класс клиентов $clients->Google->dictionaryTableId='1izUdVdD12SMOY-1QaU6ABh5E7DDx4'; //таблица $clients->Nike->dictionaryTableId='1izUdVdD12S8Vc9OY-1QaU6ABh5E7DDx4'; Class Client{ //конкретный клиент динамические свойства public $name; public $dictionaryTableId; public $dictionarySheetList; } $client=new Client; //Текущий клиент $client->name=ThisClient($argv); $client->dictionaryTableId=$clients->{$client->name}->dictionaryTableId; //***// function ThisClient($argv){ //читаем 1й параметр запуска и определяем текущего клиента global $clients; if (isset($argv[1])){ if(isset($clients->{$argv[1]})){ //если передан параметр и он существует в списке клиентов устанавливаем значение $client=$argv[1]; return $client; } } return $client='Google'; //значение по умолчанию временн }
у тебя код не рабочий PHP: <?php $name = 'Google'; $array = [ 'Google' => [ 'dictionaryTableId' => '1izUdVdD12SMOY-1QaU6ABh5E7DDx4' ], 'Nike' => [ 'dictionaryTableId' => '1izUdVdD12S8Vc9OY-1QaU6ABh5E7DDx4' ], ]; $array['name'] = $name; $array['dictionaryTableId'] = $array[$name]['dictionaryTableId'] ?? $array['Google']['dictionaryTableId']; /* ... */ $client = json_decode ( json_encode ( $array ) ); echo $client -> dictionaryTableId;