Добавление элементов в массив реестра по ключу

Вероломство

PHP:
  1. // В реестре уже есть массив по ключу modal, нужно добавить в этот ключ ещё
  2. Registry::set(‘modal’, Registry::get(‘modal’) + [‘building’ => $building]);

реестр классический

PHP:
  1. <?php
  2.  
  3.  
  4. namespace core;
  5.  
  6.  
  7. abstract class Registry
  8. {
  9.     private static $services = [];
  10.  
  11.     public static function set($key, $value)
  12.     {
  13.         self::$services[$key] = $value;
  14.     }
  15.  
  16.     public static function get($key)
  17.     {
  18.         return self::$services[$key] ?? null;
  19.     }
  20. }

Только вот кажется мне что это дичь какая-то у меня с добавлением :)

Или нормально всё?

 

ADSoft

диковато…

типа как то так я думаю

PHP:
  1. Registry::set(‘modal’,[‘building’ => $building]);
PHP:
  1. public static function set($key, $value)
  2.     {
  3.         if (isset(self::$services[$key] )) {
  4.            self::$services[$key] = array_merge(self::$services[$key] ,$value);
  5.           } else {
  6.             self::$services[$key] = $value;
  7.           }
  8.     }
 

MouseZver

а если я захочу перезаписать сохраненное значение ?

 

MouseZver

кстати, хорошая идея.
Метод — set, заменить на add.
Создать метод set с жестким присвоением

 

ADSoft

я принцип подкинул ))) детали сами уж как нибудь ))))

 

Вероломство

@MouseZver @ADSoft ок, я суть понял и с проверкой ключа и с расширением класса :)

 

Вероломство

@MouseZver @ADSoft сделал вот так пока что косяков не заметил в тех случаях, как я применяю

PHP:
  1. <?php
  2.  
  3.  
  4. namespace core;
  5.  
  6.  
  7. abstract class Data
  8. {
  9.     public static $array = [];
  10.  
  11.     public static function set($key, $param_1, $param_2 = null)
  12.     {
  13.         if ($param_2) {
  14.             self::$array[$key][$param_1] = $param_2;
  15.         } else {
  16.             self::$array[$key] = $param_1;
  17.         }
  18.     }
  19.  
  20.     public static function get($key, $param = null)
  21.     {
  22.         if ($param) {
  23.             return self::$array[$key][$param] ?? null;
  24.         } else {
  25.             return self::$array[$key] ?? null;
  26.         }
  27.     }
  28. }
 

MouseZver

Вероломство

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *