Я настроил недавно jenkins для PHP-проекта. Ничего не скажу — по удобству опережает CruiseControl+PHPUnderControl, другого не пробовал. Но есть один баг/фича — в codebrowser файлы выводятся полностью на главной странице вне зависимости от вложенности в файловой системе — пример можно посмотреть тут: http://ci.thephp.cc/job/bankaccount/Code_Browser/?. Такой подход хорош когда в проекте пара десятков файлов. У нас же — тысячи (8781 файл, 1002 директории), в игноре примерно половина. Получается — codebrowser прекрасно генерирует файлик отчёта (html), но жопа наступает на этапе его отображения — всё пипец как тормозит (подозреваю — навешиваются события яваскриптовые либо тяжёлые обходы/селекотры) и в конце концов хром крашится.
Так вот вопрос — можно ли как-то список файлов отображать также иерархично, как и в файловой системе?
Плохо что вариант ответа может быть только один. Я, например, работаю с несколькими проектами, написанными на разных фреймворках. Что отвечать: последний использованный, чаще всего используемый и т.д.?
Не все, только если она подозрительно топорщится. Либо другая хитрость — покупая билет на сеанс нужно посмотреть — какое пиво продаётся и купить такое же. После этого демонстративно открыто нести его в зал.
Добро пожаловать в мемкеш/редис. Объекты и так кешируются, опкод кешируется, вывод веб-сервера — и тот кешируется (который нужен). Поэтому проблема 1450 строк хоть и присутствует, но не так актуальна.
Множественное наследование есть гут. У нас, например, есть кучка полезнейших классов (Singleton, Request, Traversable, Iterator, e.t.c.) и теперь очень просто добавить разрабатываемому классу нужное поведение. Пока это приходится реализовывать через Dependency Injection.
Где public/protected/private?
Так вот вопрос — можно ли как-то список файлов отображать также иерархично, как и в файловой системе?
Мой вопрос на stackoverflow — так на него никто и не ответил, просмотрели ажно 4 раза :)
Это называется factory и автор как-то лихо объехал этот замечательный паттерн в пользу геттеров/сеттеров
А в PHP достаточно такого: $a = (int|bool|array|string|object)$a;
Страшная версия!
П.С. Мой код не работает после обновления. Хорошо хоть не продакшн. Спасиб гуглу за бессонные выходные.
П.С. А попкорн у них вкусный + к нему бесплатная кола.
П.П.С. Не реклама, я просто живу напротив.
$ find. \( -name "*.php" -o -name "*.js" -o -name "*.css" \) -exec cat {} \; | wc -l
7400511
$ find. \( -name "*.php" -o -name "*.js" -o -name "*.css" \) -exec cat {} \; | wc -c
283243229
Поводов для гордости не так уж и много — куча легаси, написанного не за один год. Уууу.