Forward5
Добрый день!
Локальный проект, задача хранить настройки для доступа к клиентам (их мало, поэтому хочу прописать в коде руками).Имя клиента — 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
поэтому спрашиваю как это правильно оформить?
Forward5
с NULL разобрался, осталось понять как оформить объект правильно, чтобы не было предупреждений
MouseZver
зачем тебе объекты когда данные уже в массиве ?
Forward5
Просто так код лучше выглядит и удобнее обращаться местами;
данный момент пока остановился на таком варианте, но бесят предпреждения.
Как это правильно, красиво оформить?
код 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($clients->{$argv[1]})){ //если передан параметр и он существует в списке клиентов устанавливаем значение $client=$argv[1]; return $client; } } return $client=‘Google’; //значение по умолчанию временн }
MouseZver
у тебя код не рабочий
PHP:
<?php $name = ‘Google’; $array = [ ‘Google’ => [ ‘dictionaryTableId’ => ‘1izUdVdD12SMOY-1QaU6ABh5E7DDx4’ ], ‘Nike’ => [ ‘dictionaryTableId’ => ‘1izUdVdD12S8Vc9OY-1QaU6ABh5E7DDx4’ ], ]; $array[‘name’] = $name; $array[‘dictionaryTableId’] = $array[$name][‘dictionaryTableId’] ?? $array[‘Google’][‘dictionaryTableId’]; /* … */ echo $client -> dictionaryTableId;
AlexProg
Trait вам нужен, что бы вызвать настройки в любом месте.
MouseZver