Значение href в php не складывается [дубликат]

Вы должны посмотреть на инверсию управления:

В таком сценарии вы не будете писать это:

IInterface classRef = new ObjectWhatever();

Вы бы написали что-то вроде этого:

IInterface classRef = container.Resolve();

Это приведет к установке на основе правил в объекте container и построит для вас фактический объект, который может быть ObjectWhatever. Важно то, что вы могли бы заменить это правило тем, что вообще использовали другой тип объекта, и ваш код все равно будет работать.

Если мы покинем IoC из таблицы, вы можете написать код, который знает, что это может разговаривать с объектом , который делает что-то конкретное , но не тот тип объекта или как он это делает.

Это было бы полезно при передаче параметров.

Что касается вашего вопроса в скобках «Также, как вы могли написать метод, который принимает объект, реализующий интерфейс? Возможно ли это?», на C # вы просто используете тип интерфейса для типа параметра, например:

public void DoSomethingToAnObject(IInterface whatever) { ... }

Это подключается прямо к «разговору с объектом, который делает что-то конкретное». Метод, определенный выше, знает, чего ожидать от объекта, что он реализует все на IInterface, но ему не важно, какой тип объекта он есть, только тот, который он придерживается в контракте, что является интерфейсом.

Например, вы, вероятно, знакомы с калькуляторами и, вероятно, использовали довольно много в свои дни, но большую часть времени они все разные. С другой стороны, вы знаете, как должен работать стандартный калькулятор, поэтому вы можете использовать их все, даже если вы не можете использовать специальные функции, которые каждый калькулятор имеет, что ни у кого нет.

Это красота интерфейсов. Вы можете написать фрагмент кода, который знает, что он получит переданные ему объекты, от которых он может ожидать определенного поведения. Ему не важно, какой именно объект он хочет, только потому, что он поддерживает требуемое поведение.

Позвольте мне привести конкретный пример.

У нас есть пользовательская система перевода окон. Эта система проходит через элементы управления в форме и преобразует текст в каждый. Система знает, как обрабатывать базовые элементы управления, такие как свойство type-of-of-control-that-a-Text-свойство и аналогичные базовые элементы, но для чего-то базового оно не подходит.

Теперь , поскольку элементы управления наследуют от заранее определенных классов, которые мы не контролируем, мы могли бы сделать одну из трех вещей:

  1. Построить поддержку нашей системы перевода, чтобы определить, какой тип управления он работает с помощью и перевести правильные биты (кошмар обслуживания)
  2. Построить поддержку в базовых классах (невозможно, поскольку все элементы управления наследуются от разных заранее определенных классов)
  3. Добавить поддержку интерфейса

Итак, мы сделали nr. 3. Все наши элементы управления реализуют ILocalizable, который является интерфейсом, который дает нам один метод, способность переводить «сам» в контейнер текста перевода / правил. Таким образом, форма не должна знать, какой вид управления она обнаружила, только то, что она реализует конкретный интерфейс, и знает, что существует метод, в котором он может вызвать локализацию элемента управления.

-1
задан FazeL 13 August 2015 в 18:52
поделиться

3 ответа

Дублирующие идентификаторы могут иметь различные эффекты. Который вы испытаете, будет зависеть от метода, который вы используете для доступа к ним (и, возможно, также от браузера к браузеру).

  • Вы затронете все из них
  • Вы 'll влияют на первый
  • Вы повлияете на последний
  • Вы получите коллекцию вместо элемента, попробуйте обработать ее как элемент и получить сообщение об ошибке

Дублирующие идентификаторы в HTML не допускаются. Не делайте неприятностей для себя. Используйте классы для групп и идентификаторы для уникальных идентификаторов.

1
ответ дан Quentin 22 August 2018 в 14:48
поделиться

Как вы сказали, HTML-идентификатор для каждой спецификации должен быть уникальным. Если один из них содержит дублированный идентификатор, поведение js относительно этих идентификаторов будет непредсказуемым и может даже измениться между двумя вызовами.

Любой js-вызов на одном id (jquery или нет) будет указывать на один из идентификаторов, но без guarentee, что:

  1. Будет одинаковым каждый вызов
  2. Он будет иметь тот же порядок между 2-страничным обновлением
  3. Он будет иметь такое же поведение с двумя разными браузерами
  4. Он будет иметь такое же поведение между двумя раз в тот же браузер

Проблемы, которые могут возникнуть, зависят от того, насколько сильно js-код связан с базой DOM-структурой элемента, который мог бы в основном указывать на неопределенное исключение и останавливать выполнение js.

0
ответ дан Remy Grandin 22 August 2018 в 14:48
поделиться

Измените их как можно скорее, чтобы сохранить большую головную боль в будущем. Для элементов с одинаковым свойством используйте классы

О ваших запросах,

Теперь мне интересно, что произойдет, если это не так? Ну, HTML уже недействителен. Сейчас несколько дней, это не сильно больно, но все же не предпочтительнее.

Какие возможные ошибки могут быть вызваны? Ошибок немного сложно предсказать. Но с jQuery вы получите много.

Разве разные браузеры показывают разные реакции на эту проблему? Не уверен.

Используются ли javascript и jquery-коды, которые используют дублированные идентификаторы для обоих тегов или что? jQuery даст вам проблемы. Рассмотрим случай, когда у вас есть два поля ввода с одинаковым идентификатором. и вы пытаетесь выбрать второй, не заметив. jQuery('yourID').val(), и вместо этого вы выбираете первое значение. Подобным образом есть много возможностей.

0
ответ дан RRK 22 August 2018 в 14:48
поделиться
  • 1
    «В настоящее время это не сильно больно, но все еще не предпочтительнее». Нет, он недействителен и запрещен спецификацией HTML5. Метод JavaScript getElementById возвращает только первый идентификатор, потому что он должен быть уникальным - как только он будет найден первым, нет смысла искать больше. – James Donnelly 13 August 2015 в 13:12
  • 2
    @JamesDonnelly Спасибо за информацию. :) Ты прав. – RRK 13 August 2015 в 13:14
Другие вопросы по тегам:

Похожие вопросы: