Сделайте то, что сказал Harper Shelby...
, Но, я также добавил бы, что, если Вы не заставляете поддержку управления очищать это, можно хотеть, принимают то, что это может быть похожим на это по причине.... просто высказывание.;-)
В дополнение к большому материалу другие люди сказали, для получения первичной обработки в том, какие файлы активно используются, можно установить кэш кода операции как APC или eaccelerator на dev сервере (или даже рабочий сервер, это ничего не повредит). Затем нажмите вокруг веб-приложения на свой dev сервер (или позвольте пользователям сделать это на Вашем рабочем сервере).
Теперь смотрят на список кэшируемых файлов на Вашей администраторской странице кэша. Если файл не перечислен как кэшируемый Вашим кэшем кода операции, существует хороший шанс, он не загружается ничем.
Это не целое решение, но если каждый каталог будет иметь 10 index.php файлов (например, index.php, index2.php, и т.д.), то по крайней мере, Вы будете знать, какой используется Вашим приложением.
Да, Управление версиями является определенно шагом № 0.
, который я также рекомендовал бы пользе Инструмент Поиска кода .
Агент Роется , довольно хорошо (предположение, что Вы находитесь на окнах) http://www.mythicsoft.com/agentransack/Page.aspx?page=download
, я полетел бы слепой без поиска кода.
Попытайтесь получить подробную статистику на сайте и узнать, где точки входа и выхода. Достойный способ узнать, какие файлы точно изображаются вершина (и затем изучают те файлы для наблюдения, который включает, вытягивают).
Получают его при управлении версиями.
Выбирают соглашения о присвоении имен и файл/структуру каталогов.
Удостоверяются, что у Вас есть достойные инструменты/IDE.
Настроенный отдельная разработка/тестовая среда, если Вы уже не имеете
ТОГДА...
, К сожалению, необходимо будет отсеять через все них 1, 2, 3 файла и определить, которые используются, и от которого можно избавиться. Никакой другой путь помимо грубой силы не стачивается через, файл файлом.
Даже при том, что я имею в распоряжении RCS, я все еще часто перемещаю то, что я думаю, являются неиспользованными сценариями к скрытому местоположению, говорят .mausoleum и затем имеют RCS, игнорируют то местоположение. Хороший, чтобы быть в состоянии посмотреть локально, не возвращаясь к repo.
Отдельный HTML и PHP до самой большой степени, возможной . Я не могу подчеркнуть это достаточно! Если это сделано в каждом файле, прекрасном. Настолько долго, поскольку у Вас есть отдельные блоки PHP и HTML. Конечно, HTML будет наперчен echos тут и там, но попытка иметь все тесты, переключатели, все остальное переместилось из блока HTML и в блок PHP. Это одно может быть ОГРОМНО когда дело доходит до получения вещей, в которых разбираются.
, Если кодекс является, прежде всего, процессуальным - я принимаю в Вашем случае, который это - вероятно, лучше сделать некоторую уборку сначала, прежде, чем сделать любой серьезный рефакторинг или рефакторинг в классы.
, Поскольку Вы находите файлы/сценарии, которые могут логически быть объединены, сделайте так. (Я видел проекты - вероятно, мало чем отличающийся от Вашего - где общее количество выживающих файлов о 1/4 того, что мы запустили с).
, Как только Вы пошли настолько далеко, тогда можно начать надлежащий рефакторинг или рефакторинг в классы.
шанс Бонны!
Я всего прошел это сам.
Моя подсказка номер один не должна пытаться изменить все в день один. Вам нужны друзья, если Вы действительно хотите смочь починить эту вещь. Вам нужно Ваше уважение коллег перед предложением, как изменить все, что они продолжали работать в течение многих месяцев (годы?).
Первый, получите код при управлении версиями как можно скорее. Если это не будет легким для Вас, по крайней мере, начните делать ежедневные резервные копии, даже если это означает просто архивировать файлы и называть zip-файл с датой. Если никто там не знает об управлении версиями, купите книгу Прагматически настроенного Программиста по CVS или SVN, и установите его сами. Книги могут быть прочитаны через день, и можно быть в порядке быстро. Если никто больше не хочет использовать управление версиями, можно использовать его сами... затем, когда кто-то теряет файл, можно спасти положение с копией с repo. Рано или поздно другие будут видеть мудрость, которая является управлением версиями.
114-секундный, погружение в код настолько трудно, как Вы возможно можете. Живой это и вдыхают его в течение месяца. Покажите людям, которые являются там, что Вы собираетесь изучить их код.
В-третьих, поскольку Вы проходите код, делают обильные заметки. Запишите каждую вещь, которая беспокоит Вас о коде. Просто получите свои мысли о бумаге. Можно организовать его позже после Месяца Один.
Четвертый, установите профилировщика кода (такого как xdebug). Это скажет Вам что файлы & функции вызываются на каждой странице, и сколько времени каждая часть кода берет для выполнения. Можно использовать, это для выяснения Вашего включает проблемы, и найдите медленные биты кода. Оптимизируйте их сначала.
После Вашего месяца тяжелой работы, отсеивающей через код и делающей заметки, превращают Ваши примечания в надлежащий документ. Различные разделы могли колебаться от безопасности, к кэшированию, к архитектуре, к тому, что беспокоит Вас. Для каждой критики Вы делаете, предлагаете лучшее решение и оценку на том, сколько времени она взяла бы для фиксации. Это - то, где Вы избавляетесь от всех конкурирующих платформ JavaScript и т.д.
, Пересматривают этот документ как можно больше. я не могу подчеркнуть что достаточно.
Удостоверяются, что Ваша аудитория может сказать, что Вы делаете ее на благо компании, не только Ваших персональных предпочтений.
Существующий это Вашему боссу, лично. Установите время для обсуждения этого.
Они могли уволить Вас за то, что записали это. Если они делают, Вы более обеспечены без них, потому что они не хотят улучшаться, и Ваша карьера застоится.
Они могли бы хотеть реализовать все Ваши рекомендации. Это маловероятно, но это возможно. Затем Вы были бы счастливы (если Ваши рекомендации не перестали работать).
Наиболее вероятный они захотят реализовать несколько Ваших рекомендаций, и это лучше чем ничего. По крайней мере это поможет упростить Ваши проблемы.
Что касается тестирования, установите другой "виртуальный хост" в Apache (поддерживаемый в обоих Windows & Linux). Виртуальные Хосты позволяют Вам выполнить несколько сайтов на единственном сервере. Большинство более крупных сайтов имеет по крайней мере 3 виртуальных хоста (или фактические серверы): dev.domain.com (для ежедневной разработки), staging.domain.com (чтобы люди QA сделали тестирование на непосредственно перед выпуском), и www.domain.com (Ваш рабочий сервер). Необходимо также установить dev, подготовку и производственные версии базы данных, с различными логинами & пароли, таким образом, Вы случайно не путаете их.
альтернативное решение состояло бы в том, чтобы дать каждому разработчику их собственный виртуальный хост на сервере Linux, и они могут работать через FTP/SCP или сетевой ресурс с помощью самбы.
Удачи!
Это - действительно путаница. Но начните становиться творческими на том, где отрезать некоторые щупальца на этой вещи:
Много полезных сообщений о том, как иметь дело с этим.
, не пытаясь повторить то, что все остальные сказали:
следующие шаги зависят от того, насколько приложенный к нему пользователи. Если это не может быть изменено на очень по любой причине, Вам будет нужен прогрессивный подход. Если разработка и обслуживание все еще должны произойти, то это - вероятно, Ваша единственная опция. Не забудьте использовать ту переходящую функцию для разделения таких модификаций далеко от усилий перезаписи.
Для помещения смысла в структуру необходимо в основном создать новую структуру вместе с тем, что там. Новый обработчик DB обычно является хорошим местом для запуска, включенный от дженерика включают файл, который должна загрузить каждая страница. Цель здесь состоит в том, чтобы создать минимальное, включают структуру, которая может быть расширена позже, не говоря каждой странице загрузить дополнительные файлы.
Теперь необходимо запустить, движущаяся функциональность к новому включают файлы. Вам будет нужен способ иметь несколько файлов, открытых сразу, таких как многофайловый редактор или screen+vi (или emacs). Запустите со служебных функций и блоков кода, которые повторяются в различных местах. Попытайтесь не быть отвлеченными в фиксацию много сразу. Некоторые типы проблем оказываются перед необходимостью просто перемещать места, поскольку другие проблемы решены. Вы возвратитесь им позже.
не чувствуют, что необходимо добавить стороннюю платформу. Добавление такой вещи быстро приводит к полной перезаписи. На данном этапе это будет намного большим количеством работы, чем просто приручение включать структуру. Поэтому уладьте это сначала.
, Поскольку Вы перемещаете функциональность, у Вас должно будет быть использование файлов, Ваши новые включают файл. Первые несколько файлов Вы делаете это для Вас, будут преследовать конфликты некоторое время. Это будет чувствовать себя приводящим в уныние и бессмысленным, но это - вероятно, самая твердая часть. После нескольких файлов это станет легче. Будут времена, когда можно будет мигрировать, полдюжины страниц к новому включают файлы путем замены дюжины, включает со всего один. Оборот того, что действие состоит в том, что будут файлы, которые можно просто удалить.
, Если Вы упорно продолжаете его, Вы в конечном счете перейдете к сути дела, где все включать файлы - те, Вы записали, и Вы будете через целое, включают расположение. Тем, что точка, будет значительно легче сделать намного более агрессивные изменения, как включение сторонней платформы.
Вот некоторые идеи:
grep
'луг (или некоторая альтернатива Windows) для "включает" и "требует" во всех файлах PHP. Тогда составьте список всех включенных найденных файлов. Сравните список с файлами в папке. Необходимо быть в состоянии избавиться от, по крайней мере, НЕКОТОРЫХ не имеющих ссылки файлов. Я думаю все 5 из Ваших точек, пораженных в некоторые классические проекты ASP, которые я наследовал, и PHP один также...
я полностью согласен с другими относительно, получают его в управлении исходным кодом как можно скорее и используют VMware, VirtualBox, и т.д. для тестовой среды.
Удостоверяются, что присвоили версию Вашей базе данных также, особенно если процедуры имеют дополнительную логику в них (не, просто прямо вставляют, обновляют, удаляют). Управление версиями DB берет больше внимания тогда php страницы. Необходимо генерировать все объекты к sql сценариям и поместить те сценарии в управление исходным кодом. Тогда, поскольку Вы изменяете структуру дб, процедуры, и т.д. необходимо обновить сценарии, таким образом, у Вас есть история тех изменений также.
Что касается выяснения, что использует то, на что на стороне базы данных я предложил бы смотреть ApexSQL, Чистый . Я использовал это на проекте с несколькими сотнями файлов ASP, 200 + таблицы и приблизительно 400 хранимых процедур. Я смог определить приблизительно 20 таблиц, которые не использовались и приблизительно 25% хранимых процедур. С ApexSQL, Чистым, можно добавить все php файлы в проверку зависимости наряду с таблицами, представления и сохраненный procs. Захватите 30-дневную пробную версию и проверьте ее, она сохранит Вас много времени.
Для того, какие файлы использовались для веб-сайта, я имел журналы веб-сервера в течение предыдущего месяца и запустил поиски против них для чего-либо, на чем я был не уверен. Мне действительно также нравится изменение на том, что Aistina, предложенный при изменении файлов для входа, когда к ним получают доступ. Возможно, имейте его, переходят к таблице в базе данных, которую Вы устанавливаете, который является именем файла и количеством доступа и в течение каждого раза, когда файл загружается, это увеличивает количество. Тогда после промежутка времени можно просмотреть количества и определить то, что может пойти.
Первый шаг, конечно, должен был бы подвергнуть его управлению версиями. Таким образом, по крайней мере, можно вернуться к исходной рабочей версии. Во-вторых, это могла бы быть хорошая идея перезаписать включать, потребовать, и т.д. функции к, например, запишите имя файла файла, это включается в некоторый файл журнала, этот способ, которым можно узнать, какие файлы на самом деле включаются (таким образом, надо надеяться, исключающий много index2.php, index3.php, и т.д.
Для обнаружения, при необходимости, если некоторые классы используются и некоторые не, можно использовать get_declared_classes в conjuction с get_defined_vars и gettype для наблюдения, какие типы инстанцируют.
Что касается выпуска 4 и 5, тех, вероятно, немного более трудно решить, но это должно запустить Вас, надо надеяться.
Первая вещь, которую я сделал бы, настраивается тестовая среда с помощью какой-то виртуальной машины. VirtualBox или Виртуальный ПК были бы прекрасным выбором. Тем путем можно начать изменять вещи без страха перед повреждением продуктивной среды. Неважно, сколько работы это кажется, что будет (с базой данных и веб-сервером и всем) в конце, это будет стоить того. Одно из больших преимуществ - Вы, может скопировать VM и дать его кому-то еще, если Вы находите необходимость в помощи.
Делают резервное копирование кода теперь.
Управление версиями.
Создают испытательную площадку. Сайт работает под Apache? Можно даже установить MySQL Apache + PHP + на собственном компьютере и использование это для тестирования.
Соглашение с проблемами безопасности. Удостоверьтесь, что сайт защищен от внедрения SQL, и от почтовой инжекции. По крайней мере можно сделать поиск вызовов базы данных и добавить вызовы к mysql_real_escape_string()
(хорошо, если он использует базу данных MySQL)..., можно сделать реальную фиксацию позже, как только Вы понимаете код лучше. Поскольку почтовая инжекция... пишет функцию фильтра, которая отфильтровывает код спаммера, и удостоверьтесь все поля формы, которые используются в электронном письме, фильтрованы. (Да это добавляет больше кода спагетти, но это собирается требовать времени, прежде чем Вы будете готовы значительно осуществить рефакторинг код.)
После этого, я предлагаю возрастающие обновления. Вы являетесь новыми, и код является путаницей higgleypiggley, таким образом, он собирается требовать времени, чтобы понять все это... и полностью понять домен. Поэтому просто пойдите о своем задании некоторое время, фиксируя что потребности быть зафиксированными, добавив что потребности быть добавленными. Как Вы делаете так, Вы изучаете, как система соединена. Как только Вы знаете, как код организован (или не организован), немного лучше, можно начать планировать основной рефакторинг/перезапись системы. Надо надеяться, можно сделать это компонент компонентом, таким образом, Вы всегда получали новый этап невдалеке.
функции Удивительно, никто даже не упомянул это, насколько я вижу, но существует другая альтернатива: разочаровываются в коде и просто используют функциональность самого сайта как спецификация набора новой возможности (т.е. первая когда-либо для этого проекта) и затем восстанавливают сайт, на основе тех функций, с установленной платформой (таких как Symfony, Laravel или Drupal).
Да, существуют те, кто съежился бы при злой перезаписи Word ..., но там случаи, когда это - на самом деле лучший способ пойти, и Вы намекнули на некоторые причины:
Несомненно, все в этом положении должны были работать с кодом как это прежде, но иногда хватит, и лучше фрагментировать спагетти и запуститься с новой пластины.
, Если Вы читаете статья Joel о том, почему это плохо, чтобы сделать перезапись, Вы не заметите почти ни одно из обстоятельств, которые он цитирует, относятся к Вам здесь.
Вы видите, что список весь включал/требовал файлы путем помещения этой близости конец страницы:
<?php var_dump(get_included_files()); ?>
Я был бы:
я знаю, что мы не можем ограничить нас всего одной задачей за один раз; однако, можно ограничить работу решением одной путаницы за один раз при работе над ежедневными задачами, которые входят.
У других людей на этом потоке есть большой совет. Я был в этой ситуации также. Вероятно, все когда-то в их карьере, обойденной в проект, который похож на него, были поражены торнадо.
Одно предложение, которое я добавил бы, - то, что, прежде чем Вы сделаете любую очистку, описанную другими людьми, необходимо получить закрытие сделки управления.
Естественно необходимо продолжить работать с текущей путаницей, потому что это - живой сайт. Управление живым сайтом берет приоритет, таким образом, работа очистки должна быть фоновой задачей. Это означает, что возьмет еще дольше. Мои события, очищающие проект умеренного размера как фоновая задача, обычно занимали шесть - двенадцать месяцев. Так как сайт продолжит развиваться за этот период, некоторые Ваши выполненные задачи очистки, возможно, должны быть пересмотрены или восстановлены. Удостоверьтесь, что Ваш менеджер понимает все это также.
, Если менеджер передумал относительно Вашего плана очистить эту путаницу или не оценивает чистку его, по крайней мере, тогда, Вы будете знать, почему все другие разработчики покинули эту компанию!
у меня есть несколько определенных предложений о том, как продолжить двигаться:
get_included_files()
, который возвращает массив всех файлов, включенных во время текущего запроса. Путем входа этой информации можно узнать, какие файлы PHP используются, даже если они не обнаруживаются в журнале веб-сервера. Одна вещь, которую Вы могли бы рассмотреть, состоит в том, чтобы установить PHP "xdebug" расширение в среде разработки, установить его для трассировки всех вызовов функции, и затем максимально полностью, (возможно посредством автоматизированного тестирования UI) осуществляют целое приложение. Вы тогда будете в состоянии анализировать/анализировать xdebug файлы трассировки для нахождения всех файлов/функций используемыми приложением.
Если это - очень худший случай, код является всем scrampled, и весь дисплей смешивается с логикой и вызовами базы данных, Вы могли бы сделать то, что я имел отношение к одному проекту PHP.
я дал его три, запускается при попытке подхода рефакторинга. Это было похоже на преодоление подъема на мотоцикле и получение 10% пути каждый раз. Таким образом, я проявил другой подход, который закончил тем, что удался намного лучше.
я сделал это в течение 3 твердых дней, и затем сделал мои заметки и имел долгий разговор с заинтересованными сторонами.
После получения соглашения по некоторым первым шагам, я повторно реализовал весь HTML UI правильно, с помощью хорошего последовательного дизайна и абстракции. После получения прокрутки я мог сделать пару экранов день.
Тогда я забрал результат заинтересованным сторонам и пробежал набор вариантов использования. (Заинтересованные стороны были очень рады шагам 1 и 2, потому что им не нравилась первая реализация вообще так или иначе (удивление), и теперь было похоже, что была надежда на улучшение, не только восстановление нормального старого приложения.
, Который оказался концом тяжелой работы (и также конец воспринятого риска проекта для заинтересованных сторон.)
оказалось, что первая команда стала так занятой в их собственных рожденных вне брака спагетти, что было на самом деле сравнительно мало содержания к работе, так дублирование его имело меньше объема, чем все подозревали.
, Но ключевое решение был то, что исходный код, и содержание и структура, был unrefactorable, и я должен был работать от совершенно внешнего представления с новой платформой, которая была правильно разработана.
Настроенный сервер разработки (поскольку Greg Hewgill упомянул, VirtualBox и Виртуальный ПК, является хорошим выбором для этого).
Помещенный текущие файлы сайта (включая соответствующий веб-сервер и конфигурации PHP!) в управление версиями.
Узнают, какие файлы используются - используют Вашу установку сервера разработки, чтобы протестировать путем удаления всех fooN.php файлов и видеть, работает ли она все еще.
Молятся... партии (хорошо, это не требуется, но это кажется на необходимость в нем).
Большую часть времени можно сказать, используется ли файл при помощи grep.
grep -r "index2.php" *
можно также использовать синтаксический анализатор PHP для помощи Вам очистка. Вот сценарий в качестве примера, который распечатывает функции, которые объявляются и вызовы функции:
#!/usr/bin/php
<?php
class Token {
public $type;
public $contents;
public function __construct($rawToken) {
if (is_array($rawToken)) {
$this->type = $rawToken[0];
$this->contents = $rawToken[1];
} else {
$this->type = -1;
$this->contents = $rawToken;
}
}
}
$file = $argv[1];
$code = file_get_contents($file);
$rawTokens = token_get_all($code);
$tokens = array();
foreach ($rawTokens as $rawToken) {
$tokens[] = new Token($rawToken);
}
function skipWhitespace(&$tokens, &$i) {
global $lineNo;
$i++;
$token = $tokens[$i];
while ($token->type == T_WHITESPACE) {
$lineNo += substr($token->contents, "\n");
$i++;
$token = $tokens[$i];
}
}
function nextToken(&$j) {
global $tokens, $i;
$j = $i;
do {
$j++;
$token = $tokens[$j];
} while ($token->type == T_WHITESPACE);
return $token;
}
for ($i = 0, $n = count($tokens); $i < $n; $i++) {
$token = $tokens[$i];
if ($token->type == T_FUNCTION) {
skipWhitespace($tokens, $i);
$functionName = $tokens[$i]->contents;
echo 'Function: ' . $functionName . "\n";
} elseif ($token->type == T_STRING) {
skipWhitespace($tokens, $i);
$nextToken = $tokens[$i];
if ($nextToken->contents == '(') {
echo 'Call: ' . $token->contents . "\n";
}
}
}
Ну, первые вещи сначала. Я был в ситуации, в которой Вы находитесь, и она сосет. Я думаю, что Вы на правильном пути с желанием разбудить среду разработки и выполнение.
Это будет включать веб-сервер / механизм выполнения сценария / стопка механизма базы данных и IDE, скорее всего.
Для установщик стека LAMP , я рекомендую использовать один из них:
Дополнительные материалы для чтения на стеке LAMP:
Для пользы PHP IDE, я рекомендую использовать один из них:
о сайте Разработчика IBM сравнение нескольких IDE
Для [1 139] Управление исходным кодом , можно использовать Сервер Основы Команды, SVN, или Мерзавец - просто использует что-то, что Вы знаете. Я рекомендовал бы получить все в управлении исходным кодом сначала (для любого экстренного техобслуживания, которое Вы могли бы иметь), но тогда запланируйте выполнение довольно большой перестройки.
Вы упомянули, что даже не знали, какие файлы привыкают, и что они использовали соглашение о присвоении имен файла в качестве псевдоуправления версиями. Вы могли бы хотеть запустить перестройку там, как только у Вас есть среда разработки и выполнение. Существует несколько вещей, которые могут помочь Вам:
, Ваши клиенты/пользователи важны , потому что это кажется, что Вы плохо знакомы с проектом, и они собираются знать, как приложение должно вести себя лучше, чем Вы (скорее всего).
Дотошная запись лекций важна , потому что Вы собираетесь быть по существу перезаписью любых требований / дизайн / документация для конечных пользователей с нуля. Необходимо понять внутренности, если Вы собираетесь сделать это. И если Вы соберетесь понять что-нибудь об этой системе, необходимо будет записать его вниз сами (или Вы просмотрели бы предварительно сделанную документацию прямо сейчас вместо того, чтобы читать Переполнение стека);-)
И наконец, платформа журналирования важна , потому что необходимо починить вещи, и Вы не можете починить вещи, которые Вы не знаете, повреждаются. Платформа журналирования дает Вам видимость в части приложения, которые не имеют никакого очевидного UI. Вставка его в различные части приложения и затем рассмотрение журналов дают Вам хорошую идею того, когда код выполняется и в какой порядок.
Вы захотите сфокусироваться на получении (на бумаге), как приложение должно работать, и затем медленно удаление ненужных файлов при попытке не повредить что-либо. Следите за журналами для помощи с отладкой. Удостоверьтесь, что Ваши клиенты не кричат, что что-то повреждается. Удостоверьтесь, что Ваши примечания соглашаются с тем, что становится зарегистрированным и что говорят Ваши клиенты.
Перепроверка все назад в управление исходным кодом . Надо надеяться, Вы прибудете в более новую, более нормальную, лучшую структуру каталогов этой точкой.
Получают тестовую структуру на месте . Даже если это просто означает получать среду тестирования основной единицы на месте и делать некоторые основные испытания с помощью дыма после того, как каждый развертывается, это лучше чем ничего. Идеально, у Вас должны быть инженер-испытатель или хорошо осведомленный и защищенный клиент, который может провести время, тестируя после того, как каждый развертывается.
Помещенный процесс развертывания на месте , если Вы выращиваете больше чем одного разработчика. Управление изменением в Вашей продуктивной среде должно быть Вашей первоочередной задачей. (Последняя вещь, которую Вы хотели бы сделать, проходят это снова, правильно?) У Вас должен быть четкий и простой процесс для перемещения между границами среды (как Dev-> Тест тогда Тест-> Производство).
Я сделал это. У Вас есть мое сочувствие. Если Ваш паспорт не является текущим, или по некоторой другой причине Вы не можете избежать выполнения этого, вот то, как я приблизился бы к нему:
Нуль Шага должен получить его в управление версиями, неважно, насколько дрянной это. Это даже вид работ, и при повреждении чего-то необходимо быть в состоянии вернуться к рабочему состоянию - или по крайней мере сравнить изменения в нем для выяснения то, что пошло не так, как надо. Действительно часто посещайте, маленькие регистрации, поскольку Вы осуществляете рефакторинг, и у Вас будет меньше кода для отката, когда вещи загадочно пойдут не так, как надо. (Вещи загадочно пойдут не так, как надо.)
После этого, я запустил бы в базе данных. Удостоверьтесь, что все относительно хорошо нормализовано, столбцы ясно называют, и т.д.
Делают код PHP затем. Если бы код является действительно так большой частью пэчворка, я шел бы вперед и соответствовал бы ему к платформе. Изучите CakePHP или Symfony - их способ выхода направляющих разделения проблем делает вопрос, "куда эта часть кода должна пойти?" легкий ответить. Это не маленькая задача, но как только Вы сделали его, Вы, вероятно, лучше, чем на полпути к наличию нормально созданного приложения. Кроме того, встроенные тестовые средства хорошей веб-платформы делают FAR рефакторинга легче - пишут тест для покрытия существующей части функциональности перед изменением его, и Вы будете знать, повредили ли Вы что-нибудь после изменения.
, Как только Вам отсортировали Вашу базу данных и имеете типовой кодекс в моделях и код контроллера в контроллерах, тогда можно волноваться о материале уровня представления как стандартизация на единственной библиотеке JS/AJAX, CSS чистки, и т.д.
Что касается dev среды: необходимо абсолютно настроить локальную dev среду. Существует тюремщик пакеты WAMP там, или Вы могли установить на Linux box/VM (я рекомендую VirtualBox для виртуализации). У Вас должна также быть отдельная среда интеграционного теста, которая подражает живому серверу. Только живой код должен работать на живом сервере.
До инструментов отладки/профилирования, я знаю, что Symfony идет с довольно гладким набором инструментов, включая небольшую панель инструментов JS, которая подходит на Ваших страницах (только в режиме отладки) с входом & профильная информация.
Удача.
Вам определенно нужна среда разработки. Если Вы не хотите смешивать с выполнением сайта на Вашем поле окон, Вы могли захватить изображение VMware некоторого дистрибутива Linux.
Я знаю, как Вы чувствуете. Я наследовал разработку такого проекта. Это оставалось со мной в течение года, и быть честным это сделало меня разработчиком, который я сегодня. Нет никакой лучшей возможности для персонального продвижения, чем работа по колено в дерьме.
Вот вещи, которые помогли мне к большинству:
узнайте, как пользователи системы обрабатываются (сессии, cookie). Создайте суперпользователь и затем когда необходимо протестировать код, живой в системе, помещает его в блок как это:
if($_POST['your_registered_user_name']{
//Your live code being tested, which will be visible only to you when you are logged in
}
другая пользовательская привычка смочь чувствовать изменения. Эта техника помогла мне много, когда я не мог заменить состояние системы на своей локальной машине
тест записи, и следует строгим техническим инструкциям для всего кода, который Вы пишете