Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Настройка или конфигурация, В чём разница?
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




chee
Цитата
return array();

Именно так и делаю
Цитата
если твои объекты можно настраивать из вне, то это всегда плюс.

Настраиваю через метод setConfig();
В этом и заключался вопрос, setSetting или setConfig =)

Дефолтные тоже есть, просто объединяются типа того:
public function setConfig (array $config) {
$this->config = array_merge($this->config, $config);
}


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 777
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 5 дней
Карма: 40




Цитата (Arh @ 13.01.2016 - 18:24)
Тогда это не настройка, это ключ свойства класса =)
Так в php и нет специальной конструкции setting.
Не пойму что ты хочешь сказать.
Свойство или переменная или значение массива отвечающее за настройку чего-либо и есть "настройка", я вот об этом.

"Настройка" это не часть кода, это скорее логическое понятие. Как уже говорил выше, что считать настройкой определяет разраб.
В частности, разрабы ПХП в описании классов определили только "свойство" и "метод", никакой "настройка" там нет.
Поэтому News::limit это свойство. Свойство содержит/имеет значение. А дальше уже разраб определяет что содержит свойство limit (т.е что есть значение свойства). В частности, это может быть "Настройка".
Но сама конструкция
public $limit = 10;
Это не есть "настройка". И $limit не есть Настройка.
Другими словами: если Вы считаете, что "10" это Настройка, значит "10" это Настройка. smile.gif
Но я бы рекомендовал использовать более логичное наименование метки свойства и в качестве его значения использовать или массив или структуру. Вот эта структура/массив и будет Настройки.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14962
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 25 дней
Карма: 443




Цитата (Razzwan @ 13.01.2016 - 21:29)
если моя информация верна....

Верна, верна твоя инфа! smile.gif Спасибо!


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




S.Chushkin
Ну ты просто придрался =)
Понятно что это свойство, я и говорю что в php нет понятия setting, но в данном примере это была именно настройка количества лимита (с помощью значения свойства класса)

Вообще я в последнее время использую массив (свойство) для хранения настроек и меняю его как на примере выше с помощью сетера.


class A {
$this->config = [
'name' => 'anonym',
'value' => 'default'
];
}

$A->setConfig([
'name' => 'S.Chushkin'
]);

//value останется default, удобно


sergeiss
user posted image


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14962
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 25 дней
Карма: 443




Arh, по моему, морковку ему куда-то там всунули, у него аж глаза перекосило... Не? wink.gif


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




sergeiss
Гугл такого слона посоветовал) Бери говорит, не ошибёшься.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 10 месяцев, 29 дней
Карма: 40




Arh, а по моему, это не правильно, нужно делать так


public function setConfig (Config $config) {
$this->config = $config;
}

public function someMethod() {
$this->config->get('limit', 100);
}


на или так


protected $defaultLimit = 100;
public function setConfig (Config $config) {
$this->config = $config;
}

public function someMethod() {
$this->config->get('limit', $this->defaultLimit);
}


Поясню

1. Экономия ресурсов, не нужно делать сливания массивов
2. Более выразительно

Хотя самый правильный вариант конечно же такой


public function setConfig (Config $config) {
$this->config = $config;
}

public function someMethod() {
$this->config->get('limit');
}


То есть, значения по-умолчанию для конфигурации, за рамками ответственности этого объекта, поэтому я бы не указывал значения по-умолчанию.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




chee
Не сразу понял твой пример)
Надо еще один опрос создать про заглавные имена у объектов =)

Это конечно же так и есть.
$Config->set('limit', 10);
echo $Config->get('limit'); //10


Я говорил про дополнительный метод, который устанавливает всё сразу, в случае если например конфиг лежит в базе/кэше и нужно его передать в класс
Тут либо через конструктор или/и через метод setConfig, можно конечно не сливать, а просто заменять, но тогда есть шанс что передал не полный конфиг и будет нотис.

С конфигом конечно не очень пример, допустим есть шаблонизатор у которого поумолчанию что то вроде
$tag = [
'titile' => 'Мой любимый сайт',
'description' => 'Самый крутой сайт из всех на свете'
];


в шаблоне выводишь
<title><?=$tag['titile']?></title?>
<meta
name="description" content="<?=$tag['description']?>">


На какой то странице захотел только title сменить, получилось так что перезаписал и ключа description больше не существует.

Тоже есть к чему придраться в примере, но суть такая)

Или к примеру $user, если он не авторизирован, то значения по умолчанию, если авторизирован, но не заполнено имя, то дефолтное значение можно написать "аноним", а не просто пустое место. Ну или не имя а пол или аватарка.
Короче в зависимости от ситуации.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 10 месяцев, 29 дней
Карма: 40




Arh, PSR-2 тебе на счет заглавных букв.

$Config->set('limit', 10);

Бред, никогда не пиши так :D

Примеры какие-то невнятные, они практически не соотносятся с нашим обсуждением. То есть притянуты за уши.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 777
Пользователь №: 36058
На форуме: 3 года, 11 месяцев, 5 дней
Карма: 40




Цитата (chee @ 13.01.2016 - 23:04)
Arh, а по моему, это не правильно, нужно делать так


public function setConfig (Config $config) {
        $this->config = $config;
}

public function someMethod() {
    $this->config->get('limit');
}

IMHO, это плохое решение. default-значения у настроек должны быть всегда, иначе придётся указывать все настройки - если их десятки, это уже трудоёмко.
Лучше так, например:
public function setConfig (array $config) {
$this->config = $config;
$this->config += [default-значения параметров настройки _от самого объекта_];
}
public function someMethod() {
... $this->config['limit'];
}

Можно и объект вместо массива конечно, только будет чуть сложнее.

В общем, наличие значения по умолчанию заметно упрощает жизнь


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 18 дней
Карма: 725

Не курю:
1 год, 2 месяца, 5 дней


Arh
устанавливай свои правила!

class News {

protected $settings['limit'] = 10; //Это настройка

}



Или

class Files {

protected $config['uploadDir'] = 'upload'; //Это конфигурация

}


и хер поспоришь :lol:


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




chee
Цитата
Бред, никогда не пиши так biggrin.gif

Тебе можно так писать, а мне нет? $this->config->get('limit', 100);
у тебя же из примера взял, а теперь оказывается бред.
Потому что класс с большой буквы назвал?
Потому что config вместо setting?
Или потому что нет s наконце?)
Или лимит 10 слишком мало?
Пойду погадаю.

Цитата
PSR-2 тебе на счет заглавных букв.

Где там про это? В PSR-1 есть.
"Классам НЕОБХОДИМО давать имена в стиле StudlyCaps."
в PSR-2 не вижу.


Цитата
Примеры какие-то невнятные, они практически не соотносятся с нашим обсуждением. То есть притянуты за уши.

Обсуждение было "настройка vs конфиг".
Но всё как всегда съехало на другую тему "как менять значения свойств".

Вполне себе внятные примеры. Есть дефолтные значения, меняются они с помощью метода. Например в шаблонизаторе или авторизации пользователя, куда уж внятнее?


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 10 месяцев, 29 дней
Карма: 40




Arh, на счет бреда, да загнул, это было не насчет оформления, а самого кода. Ну метода set для объекта конфигурация, а потом я вспомнил, что у меня set тоже есть, что изменять конфигурацию.

По стандарту PSR-2 надо быть очень ограниченным, что бы из примеров кода это стандарта не вывести, стандарт оформления PSR-1.

Тема твоя шлак, потому что в ней и нечего обсуждать. Но вот тема как работать с объектом конфигурации довольна интересна и на счет неё можно подискутировать, как я считаю.

S.Chushkin, в некоторых решениях такой подход себя оправдывает, но когда количество настроек начинает расти, то приходится начинать всё систематизировать. А систематизация заключается в следующем:
1. Описание через метаданные большинства настроек (в метаданных можно задать значения по-умолчанию);
2. По описанным метаданным, можно сделать слепок настроек;
3. Описанные метаданные могут участвовать в построении интерфейса настроек;


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




chee
Цитата
Но вот тема как работать с объектом конфигурации довольна интересна и на счет неё можно подискутировать, как я считаю.

Или с объектом настроек =)

Цитата
а потом я вспомнил, что у меня set тоже есть, что изменять конфигурацию.

То есть если у тебя проекте нет похожего, то ты автоматом считаешь что это бред? В принципе я догадывался.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 14 дней
Карма: 111




parameters =)


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса