Log message #4102305

# At Username Text
# Dec 10th 2017, 14:50 admad well earlier you never mentioned you can skip using the `fields` key when adding the behavior
# Dec 10th 2017, 14:49 saeideng ``` public function initialize(array $config) { $configs = []; foreach ($config as $field => $settings) { if (is_int($field)) { $configs[$settings] = []; } else { $configs[$field] = $settings; } } $this->setConfig($configs); } ```
# Dec 10th 2017, 14:49 saeideng for example
# Dec 10th 2017, 14:48 saeideng I know
# Dec 10th 2017, 14:48 admad my code will give you exact same result
# Dec 10th 2017, 14:48 saeideng $this->setconfig(['fields'=>['image1']]);
# Dec 10th 2017, 14:48 saeideng `$this->configShallow(['fields'=>['image1']]);`
# Dec 10th 2017, 14:48 saeideng but i my case I have array as first arg
# Dec 10th 2017, 14:47 saeideng @admad in above your code you used a key/value
# Dec 10th 2017, 14:47 admad nothing confusing, it uses Hash::merge() internally :slightly_smiling_face:
# Dec 10th 2017, 14:46 dereuromark part of that ticket is to think about if we can use shallow by default, and use non shallow = deep manually
# Dec 10th 2017, 14:46 saeideng setConfig have a bit confusing about arrays and merge/unmerge
# Dec 10th 2017, 14:44 saeideng thanks @admad, @dereuromark for your points
# Dec 10th 2017, 14:43 saeideng :slightly_smiling_face:
# Dec 10th 2017, 14:43 saeideng configShallow solved my problem
# Dec 10th 2017, 14:43 dereuromark the non assoc array inside assoc config array always has been a painpoint for configuration and merging :slightly_smiling_face: See https://github.com/cakephp/cakephp/issues/7267
# Dec 10th 2017, 14:42 admad personally i just wouldn't have `'fields' => ['image']` as default.
# Dec 10th 2017, 14:41 dereuromark there should be a shallow*
# Dec 10th 2017, 14:41 admad ``` public function initialize($config) { if (!empty($config['fields])) { $this->setConfig('fields', $config['fields], false); } } ```
# Dec 10th 2017, 14:39 saeideng without merging
# Dec 10th 2017, 14:39 saeideng so how can put array into this method ?
# Dec 10th 2017, 14:38 saeideng `public function setConfig($key, $value = null, $merge = true)`
# Dec 10th 2017, 14:38 admad that's expected, since by default options are merged
# Dec 10th 2017, 14:38 saeideng I need to override the config
# Dec 10th 2017, 14:37 saeideng my output ``` [ (int) 0 => 'image', (int) 1 => 'image', (int) 2 => 'img', (int) 3 => 'image1' ] ```
# Dec 10th 2017, 14:37 saeideng and ``` protected $_defaultConfig = [ 'fields' => ['image'] ]; ```
# Dec 10th 2017, 14:36 saeideng and within behavior ``` public function initialize(array $config) { $this->setConfig(['fields'=>['image1']]); } ```
# Dec 10th 2017, 14:36 saeideng `$this->addBehavior('UploadConfig',['fields'=>['image','img']]);`
# Dec 10th 2017, 14:36 admad you are using `$this` so isn't it obvious whether it's a static call or through instance?
# Dec 10th 2017, 14:36 saeideng see my example
# Dec 10th 2017, 14:34 slackebot Action: admad sighs
# Dec 10th 2017, 14:34 saeideng I dont know
# Dec 10th 2017, 14:34 admad do you use a behavior statically or through instance?
# Dec 10th 2017, 14:33 saeideng `$this->setConfig($configs);`
# Dec 10th 2017, 14:33 saeideng because I set
# Dec 10th 2017, 14:33 admad no
# Dec 10th 2017, 14:33 saeideng I think behavior used StaticConfigTrait
# Dec 10th 2017, 14:32 saeideng I have a problem by behavior and these :slightly_smiling_face:
# Dec 10th 2017, 14:32 admad "Static" vs "Instance"
# Dec 10th 2017, 14:30 saeideng ?
# Dec 10th 2017, 14:30 saeideng how different between `StaticConfigTrait` and `InstanceConfigTrait`