[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Настройка или конфигурация
Страницы: 1, 2
Arh
chee
Цитата
return array();

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

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

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


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

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

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
sergeiss
Цитата (Razzwan @ 13.01.2016 - 21:29)
если моя информация верна....

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

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

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

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

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

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


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

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

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


sergeiss
user posted image

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sergeiss
Arh, по моему, морковку ему куда-то там всунули, у него аж глаза перекосило... Не? wink.gif

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

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

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

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
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');
}


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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Arh
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, если он не авторизирован, то значения по умолчанию, если авторизирован, но не заполнено имя, то дефолтное значение можно написать "аноним", а не просто пустое место. Ну или не имя а пол или аватарка.
Короче в зависимости от ситуации.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Arh, PSR-2 тебе на счет заглавных букв.

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

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

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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
Цитата (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'];
}

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

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


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Игорь_Vasinsky
Arh
устанавливай свои правила!

class News {

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

}



Или

class Files {

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

}


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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Arh
chee
Цитата
Бред, никогда не пиши так biggrin.gif

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

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

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


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

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

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Arh, на счет бреда, да загнул, это было не насчет оформления, а самого кода. Ну метода set для объекта конфигурация, а потом я вспомнил, что у меня set тоже есть, что изменять конфигурацию.

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

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

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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Arh
chee
Цитата
Но вот тема как работать с объектом конфигурации довольна интересна и на счет неё можно подискутировать, как я считаю.

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

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

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
bestxp
parameters =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.