Вот ситуация. У меня есть несколько классов, которые находятся в одном проекте … Мой главный код находится в другом проекте … и я разделил его, потому что я использую GIT в качестве своего SCM … Поэтому, когда я отлаживаю свой основной код … Я бы хотел войти в классы и отладить их, но xdebug не позволит мне вступить в них … и я предполагаю, потому что классы находятся в другом проекте … любые идеи?
Заранее спасибо…
Я тоже столкнулся с этим. Я собираюсь предположить, что то, как ваши проекты выглядят, когда они развернуты, состоит в том, что классы в отдельном проекте копируются в какой-то каталог где-то в главном коде.
Предположим, что отдельный проект содержит только один класс, Foo
, для простоты. Предположим также, что Foo
присутствует в развернутом «основном коде» в каталоге и файле /maincode/external/lib/Foo.php
. Наконец, предположим, что /maincode/external/lib
существует как каталог в вашем проекте с основным кодом, контролируемым версией, и что он содержит только файл- /maincode/external/lib
места и в противном случае пуст.
Во-первых, используйте один из многих методов git, чтобы игнорировать содержимое /maincode/external/lib
в каталоге проекта NetBeans для этого проекта. Мы собираемся сделать так, чтобы он содержал некоторые вещи, и мы не хотим, чтобы этот каталог, который в противном случае должен был быть пустым, чтобы получить изменения, допущенные к нему по ошибке.
Теперь, когда он игнорируется, сделайте символическую ссылку в этом каталоге Foo.php
в другом проекте. В Unix вам нужна команда ln
, например
ln -s /path/to/project/files/MyFooProject/Foo.php Foo.php
В Windows вы ищете команду mklink
, например
mklink Foo.php C:\path\to\project\files\MyFooProject\Foo.php
Дайте NetBeans момент или два подумать об этом (или принудительно вызвать проблему, вызвав команду «Сканировать внешние изменения» в меню «Источник»), и вы увидите, как Foo.php
отображается в проекте «maincode», где вы сделал символическую ссылку.
Теперь, когда вы отслеживаете выполнение, и вам нужно войти в Foo.php, чтобы увидеть, что делает класс Foo, вы перейдете в тот, который находится в проекте «maincode». Так как это символическая ссылка на файл в проекте «MyFooProject», тем не менее, любые мошенники, которые вы делаете, будут отражены там.
Просто не забудьте отключить все (нормальный rm
commmand в Unix и обычную команду del
в Windows, но в каталоге, где символическая ссылка!), Когда вы закончите. Кроме того, если в каталоге были какие-то вещи, которые вы проигнорировали, что вы хотите зафиксировать, то не игнорируйте этот каталог.
Если вам нужно сделать это более чем для одного файла, вы можете связать целые каталоги. Если вместо вышесказанного вы обычно копируете содержимое «MyFooProject» в каталог /maincode/external/lib/myfoo/
в развернутой версии, а затем просто /maincode/external/lib/myfoo/
соответствующий каталог, как вы делали файл выше. В Windows, например,
cd \path\to\project\files\maincode\external\lib mklink /D myfoo C:\path\to\project\files\MyFooProject
Это сделает символическую ссылку каталога. Прошло некоторое время с тех пор, как я сделал что-то подобное в Unix, поэтому не помню точной команды для той же самой вещи на этой ОС (или если символические ссылки на каталоги даже возможны в Unix). После того, как каталог связан, вы должны увидеть новый каталог, а также все файлы и подкаталоги, отображаемые в вашем проекте «maincode» NetBeans, готовом для вашего удовольствия от отслеживания выполнения.
Опять же, не забудьте отключить и не игнорировать все, как только вы закончите, чтобы вы не проснулись на следующее утро, чтобы найти себя в замешательстве. 🙂 Чтобы отключить каталог в окнах …
cd \path\to\project\files\maincode\external\lib rmdir myfoo
и он должен отсоединиться. (Просто будьте осторожны, когда вы удаляете и rmdir'ing, что вы делаете это с символической ссылкой!)