Вы также можете сделать так, чтобы вызывающий объект передал себя в качестве аргумента
, например
class Foo
{
public function __construct()
{
$bar = new Bar();
$bar->test($this);
}
}
class Bar
{
public function test()
{
}
}
$foo = new Foo();
Я получил эту идею из книги «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения» Эриха Гамма и др. На странице 278 в дискуссии о структурном паттерне «Посредник».
Смысл паттерна состоит в том, чтобы уменьшить количество соединений «многие ко многим» между группой объектов / классов. Вы создаете класс-посредник, который все эти классы рассматривают как концентратор. Таким образом, классы не должны знать друг о друге. Посредник обрабатывает взаимодействия. Чтобы посредник был проинформирован об изменениях в отслеживаемых классах, он может передавать себя в качестве аргументов или посредник может быть реализован с использованием шаблона «Наблюдатель».
РЕДАКТИРОВКА 2018:
Я иногда использую интерфейсы с приведенным выше кодом, например:
interface someInterface // many classes may implement this interface
{
public function giveMeBar();
}
class Foo implements someInterface
{
public function __construct()
{
$bar = new Bar();
$bar->test($this);
}
public function giveMeBar() {
return 'Bar';
}
}
class Bar
{
public function test(someInterface $a)
{
echo $a->giveMeBar();
}
}
$foo = new Foo(); // prints "Bar"
Согласно этот поток , нет :
Для более поздних версий Eclipse, как подробно описано на странице справки Eclipse , вы можете использовать фильтры ресурсов (также первоначально упомянутые ниже pcoucke
)
Фильтры ресурсов можно создавать, редактировать и удалять на странице свойств
Файл> Свойства> Ресурс> Фильтры ресурсов
для ресурса проекта или папки.Фильтры ресурсов применяются только к файлам и / или папкам, которые неявно включены в рабочую область с помощью операции обновления
Фильтр ресурсов «Исключить» предотвращает включение всех файлов и / или папок, соответствующих условию фильтра, в рабочую область во время операции обновления.
Я упомянул пример в « Как получить .git
папок, игнорируемых проектами Eclipse "
If your problem is the refresh on startup, try: Preferences -> General -> Startup and Shutdown -> Refresh workspace on startup.
Извините, но я ничего не знаю о такой настройке. Как уже упоминалось, вы можете закрыть проект в Eclipse (как только он откроется). Это предотвращает повторное обновление этого проекта. В противном случае я могу просто предложить вам иметь по одной рабочей области на проект и не включать несколько разных проектов в одну рабочую область (если они не связаны друг с другом). Это гораздо лучшая практика, и я делаю это каждый день, работая с Eclipse. И у меня пока не было проблем такого типа, как вы упомянули.
Чтобы исключить проекты целиком, вы можете закрыть их. Не знаю способа для отдельных каталогов.
Я нашел эффективный способ взлома, который может заставить Eclipse игнорировать каталог. См. Eclipse - игнорировать целые каталоги
Я столкнулся с той же проблемой. Когда проект затмения обновляется, кажется, что он хочет коснуться каждого файла независимо от настроек. Кодовая база, над которой я работаю, содержит ~70K файлов, и на обновление ушло почти 2 минуты. В конце концов, я переопределил проект затмения как гораздо меньшее подмножество (~10K файлов), которое имеет ~ 1 секунду обновления. Не идеально, но долгое время обновления недопустимо.
К вашему сведению, флажок "Derived" и опции "Exclude from build..." НЕ препятствуют обновлению папки.
Обратите внимание, компьютеру, который я использую, 4-5 лет (процессор Pentium IV, жесткий диск с частотой вращения 7200 об/мин). Готов поспорить, что один из этих новых быстрых твердотельных дисков значительно увеличит время обновления!