А… ещё забыл, что надо будет решить проблему подмены синглтона на мок, когда мы будет тестировать не сам синглтон, а класс (или метод), который его использует. Тут мы должны использовать именно то имя класса, которое указано в коде. А, вот, если моков должно быть несколько для одного синглтона?
Не скажу за автора, но, возможно, основная проблема тестирования синглтонов — это противоречие: для тестирования надо два объекта, а синглтон это, вроде как, не позволяет сделать. Тут можно попробовать использовать php5.4, где через рефлексию можно создать объект любого класса или применить хак с unserialize.
Вопрос. Используем active record, где для записи каждой таблице существует класс. Допустим, есть поле time, которое принимает значения: 1 — день, 2 — ночь, 3 — вечер, 4 — утро. Т.е. есть в поле хранится только число, которое соответствует какому-то смыслу. Чтобы не было магических чисел, нужно завести константы. Каких правильно их именовать и куда их поместить?
Есть в phpdoc тэги для указания магических свойств и методов. Netbeans их показывает в автодополнении. Правда, для методов не показывает аргументы. Методами не пользуюсь, но вот свойствами таким пользоваться очень удобно.
Отличный продукт, жаль не достался код. А пользуюсь уже достаточно давно… помню ещё то оформление где со страниц сайта на меня смотрели какие-то хитрые и улыбающиеся люди.
У меня есть пунктик по поводу цифр и чисел… цифры в числах — это как буквы в словах. Посмотрите как это звучит для меня:
Любое выдающееся достижение, любая сенсационная новость, любая интересная история не обходятся без букв, которые делают все это более интересным, более выдающимся. Множество действительно интересных фактов – факты в буквах.
P.S. Не люблю синглтоны.
Не надо было бы харкордить имена классов, и автодополнение в IDE прекрасно бы работало…
0. Вариант с двумя гвоздями и вообще без верёвки.
1. Решение для одного гвоздя.
2. Решение для двух гвоздей.
Из решения с 1 гвоздём можно перейти к решению с двумя гвоздями. Видно, как область выделенная пунктиром сводится к решению с 1 гвоздём.
Это скорее всего повторение предыдущих рекурсивных решений… но как-то нагляднее и аккуратнее.
2. 100 % — это что?