• Оператор clone в php: как работает?

    Если разобраться, то все просто.

    Метод __clone, как уже писали ранее, вызывается ПОСЛЕ клонирования объекта. До его вызова php создает "поверхностную" копию объекта. Это значит, что если в одном из свойств клонируемого объекта хранится другой объект, то php копирует в новый объект его ссылку. После этой операции $original->address и $clone->address указывают на один и тот же объект. (пример кода ниже).

    Если нам нужно клонировать какое-то свойство-объект, то мы можем сделать это в методе __clone. Мне привычнее воспринимать его как коллбэк. В этом методе $this - это клон (новый объект).

    Теперь вспомним то, что php при присваивании выполняет сначала ПРАВУЮ часть операции, а затем левую.
    В данном случае это значит: "Эй, интерпретатор, возьми и клонируй то, что лежит у меня в поле adress, потом возьми ссылку на этот объект, и запиши мне в поле address"

    class Person {
      public function __clone() {
        $this->address = clone $this->address;
      }
    }
    
    $original = new Person();
    $clone = clone $original;
    Ответ написан
    Комментировать
  • Как указать класс для конкретного td в GridView Yii2?

    Я не силен в yii2, но вот так работает
    GridView::widget([
           // ...
           // --------------------- КЛАСС ДЛЯ строки -------------------------------
            'rowOptions'=>function ($model, $key, $index, $grid){
                $class=($model->confirmed)?'confirmed-row':'';
                return [
                    'key'=>$key,
                    'index'=>$index,
                    'class'=>$class
                ];
            },
           
            'columns'      => [
                [
                    'attribute' => 'confirmed',
                    // ----------------------  КЛАСС ДЛЯ СТОЛБЦА -----------------------
                    'contentOptions' => ['class' => 'text-center'],
                    'value' => function ($model) {
                       // ...
                    },
                    'format' => 'html',
               
                ],
                
            ],
        ]);
    Ответ написан
    Комментировать
  • Как сбросить все стили, присвоенные ранее?

    Можно попробовать что-то вроде, только это затронет и те стили, которые прописаны в атрибуте style
    $('#someDiv').attr('style','');
    Ответ написан
    3 комментария
  • Data hover - как сделать всплывающую подсказку на двух строчках?

    Здравствуйте, надеюсь, помогу.

    Вот пример

    Вы можете использовать unicode символы для переноса, например:

    Вот так:
    <span class="tooltip" data-tooltip="Dolor sit&#13;&#10;amen">Lorem ipsum</span>

    это чтоб не переносить значение атрибута.
    Но это все не будет работать без white-space: pre;
    .tooltip {
      border-bottom: 1px dotted #0077AA;
      cursor: help;
      &::after {
        background: rgba(0, 0, 0, 0.8);
        border-radius: 8px 8px 8px 0px;
        box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.5);
        color: #FFF;
        content: attr(data-tooltip);
        white-space: pre;
        /* Главная часть кода, определяющая содержимое всплывающей подсказки */
    Ответ написан
    1 комментарий