livetv

Рейтинг
265
Регистрация
10.02.2015
mdevelop:
$class::getInstance()

А вдруг это не одиночка, а другой шаблон?

Декоратор, допустим.

Одиночка используется, если необходимо обеспечить наличие одного экземпляра или ленивую инициализацию.

Может также использоваться пул одиночек.

---------- Добавлено 05.02.2017 в 12:40 ----------

danforth:

1) Проблемы с тестированием.

Как и с любым статическим методом :)

Как эту проблему решают фреймворки? :) У них тоже статики дофига.

danforth:

2) Непрозрачная структура зависимостей: синглтон не передается параметром в метод, он вызывается изнутри через getInstance();

Можно передавать параметром. :)

Ну и это отновится к любой статике. :)

danforth:

3) Нарушением S акронима SOLID, управляет своим жизненным циклом сам, невозможно уничтожить (а даже если и сделать метод-деструктор, то появляется зависимость от состояния системы - кто вызвал, когда инстанс был создан, кем, для чего, а может он уже вообще не нужен?).

А зачем его уничтожать? :)

Если это соединение с БД, то можно просто его закрыть. :)

danforth:

4) Порождает высокую связанность системы, которая полностью опирается на этот синглтон. Можете поискать в проекте с хотя бы синглтоном количество вызовов getInstance();

Хм, одиночку можно реализовать и без статического метода.

Но это будет не совсем одиночка.

Хранить одиночку в поле приложения.

Но необходима гарантия, что существует только один экземпляр приложения.

Хотя, зачем. Если будет другой экземпляр, то ему лучше дать своего одиночку. :)

danforth:

5) Нету никакой необходимости в его использовании. Нету ни одной причины, где действительно требовалось существование только одного объекта за жизненный цикл программы, и где бы мы не смогли проконтролировать количество этих объектов.

А как контролировать количество соединений с mysql и memcached? :)

---------- Добавлено 05.02.2017 в 12:46 ----------

mdevelop:
Из очевидных преимуществ я пока вижу возможность реализовать несколько методов одной строкой, например, так $class::getInstance()->method1()->method2()->method2().

Одиночка тут ни при чем.

Это называется цепочка вызовов.

Реализуется через return $this.

Хм, а это как-то ускоряет индексацию? :)

Вернее, способствует появлению страниц в выдаче в тот же день?

borisd:
А вообще если у вас самопис, то я бы вообще не извращался со структурой хранения товаров и его параметров.

Хм, как раз в самописи можно настроить все как нужно :)

Вот Вы и сами ниже насоветовали. :)

Aisamiery:
В запросе БД может использовать только 1 индекс, всегда только один, и выбирает максимально оптимальный.

+1

Правда, есть такое понятие, как слияние индексов.

Ну и не всегда планировщик выбирает оптимальный индекс.

Aisamiery:

А составные должны быть точто в таком же порядке как и в выражения where.

Это не так. :)

Aisamiery:

в теории (ведь это реляционная БД) вам не должно понадобиться такое количество индексов в рамкох одной таблицы.

Что это за такая теория? :)

Aisamiery:

А вот перестраивать индексы в большой таблице при insert/update/delete может стать огромной проблемой

+1.

Даже в относительно маленькой таблице (2 ГБ) инсерты начинают тупить при добавлении каждого дополнительного индекса.

---------- Добавлено 25.01.2017 в 09:59 ----------

Рамарио:
Приложение: представьте себе таблицу с параметрами товаров (как я выше писал их сейчас 14), юзер видит эту таблицу у себя в браузере. Юзеру дается возможность фильтровать и/или сортировать по любому столбцу. Я так считаю, что в данном случае на каждый такой столбец нужно по индексу.

Сколько записей в таблице?

Если записей мало, то планировщик может решить, что быстрее считать таблицу, чем копаться в индексах. :)

Смотрите, короче, EXPLAIN самых частых запросов.

Товары, я так понял, все однотипные?

Характеристики однотипных товаров можно хранить в одной таблице.

Характеристики же разнотипных товаров нужно выносить в отделюную таблицу.

А также почитайте о таком понятии, как cardinality индекса.

Если поле принимает только 2 значения, то индекс ставить на него смысла нету.

Индексы нужно ставить на поля, по которым происходят JOIN.

Попахивает тем, что правообладатели просто от лица ТС запугивают сайты, на которых есть трансляции.

Степан1:
И дает ли мне какие-то гарантии, что подрядчик является "Сертифицированным/Золотым партнером Битрикс" или это только повышает цену ?

На самом деле - это ерунда.

Говорю так, потому что сам работал в такой компании. :)

Anonyk:
Как на фейсбуке показывается время работы ресторана в данный момент. Такой же код хочу.

Ну так скопируй код у мордокниги. :)

Выбросите apache.

П.С.

Судя по всему, вы вообще в конфигах ноль. :)

ВК на 1251 кодировке :)

Нашли запросы, которые тупили? :)

Всего: 2572