PHP перенаправление без # [дубликат]

Что такое необработанный тип и почему я часто слышу, что они не должны использоваться в новом коде?

«Необработанный тип» - это использование общего класс без указания аргумента (ов) типа для его параметризованного типа (ов), например используя List вместо List<String>. Когда дженерики были введены в Java, несколько классов были обновлены для использования дженериков. Использование этого класса в качестве «необработанного типа» (без указания аргумента типа) позволило сохранить прежний код.

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

Что такое альтернатива, если мы не можем использовать необработанные типы и как это лучше?

. Предпочтительной альтернативой является использование общих классов, как предполагалось, - с подходящим аргументом типа (например, List<String>). Это позволяет программисту более конкретно указывать типы, придавая будущим сопровождающим больше смысла предполагаемое использование переменной или структуры данных и позволяет компилятору обеспечивать лучшую безопасность типов. Эти преимущества вместе могут улучшить качество кода и помочь предотвратить появление некоторых ошибок кодирования.

Например, для метода, в котором программист хочет, чтобы переменная List, называемая «имена», содержит только строки:

List<String> names = new ArrayList<String>();
names.add("John");          // OK
names.add(new Integer(1));  // compile error
30
задан Palec 15 November 2013 в 13:22
поделиться

3 ответа

Я предлагаю, чтобы это было правильное поведение. Коды состояния 302 и 307 указывают, что ресурс можно найти в другом месте. #bookmark - это место в ресурсе.

Как только ресурс (html-документ) был найден, браузер должен найти #bookmark в документе.

Аналогия такова: вы хотите посмотреть что-то вверх в книге в главе 57, поэтому вы идете в библиотеку, чтобы получить книгу. Но на полке есть заметка о том, что книга двинулась, теперь она находится в другом здании. Итак, вы идете в новое место. Вам все еще нужна глава 57 - это не имеет значения, когда вы получили книгу.

68
ответ дан Ben 21 August 2018 в 01:25
поделиться
  • 1
    Однако вы могли отправить явный якорь в свой заголовок Location. Что-то вроде http://www.yahoo.com# – Holger Just 12 March 2011 в 16:49
  • 2
    +1 за отличную аналогию – ͢bts 19 March 2012 в 18:07
  • 3
    Согласовано. Отличная аналогия. – Stephen 13 April 2012 в 15:42
  • 4
    @Ben IE8 не перенаправляет с хешем. Я хочу, чтобы он перенаправлялся. Есть идеи? – Sanjeev Kumar Dangi 8 August 2012 в 13:47
  • 5
    @JustinBicknell, протестированный в IE10, сохраняет хэш при перенаправлении. – Ben 25 July 2013 в 10:07

Это аспект, который не был охвачен предыдущими спецификациями HTTP, но был рассмотрен в более поздней HTTP-разработке :

Если сервер возвращает код ответа 300 («множественный выбор»), 301 («постоянно перемещается»), 302 («перемещается временно») или 303 («см. Другие»), и если сервер также возвращает один или несколько URI, где ресурс может быть найден, клиент ДОЛЖЕН обрабатывать новые URI, как если бы в конце был добавлен идентификатор фрагмента исходного URI.

Исключением является то, что возвращенный URI уже имеет идентификатор фрагмента. В этом случае идентификатор исходного фрагмента НЕ ДОЛЖЕН быть добавлен к нему.

Таким образом, фрагмент исходного URI должен также использоваться для URI перенаправления, если он также не содержит фрагмент.

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

@Julian Reschke или @Mark Nottingham , вероятно, знают об этом больше / лучше.

23
ответ дан Community 21 August 2018 в 01:25
поделиться
  • 1
    НЕ ДОЛЖЕН быть добавлен к нему ... бедный нас, если это стандарт :) – alex.peter 19 December 2016 в 12:04

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

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

Это определенно проблема с браузером. Браузер никогда не отправляет часть закладки URL-адреса на сервер, поэтому сервер ничего не может сделать, чтобы узнать, есть ли закладка или нет, и ничего, что можно было бы сделать с ней надежно.

2
ответ дан Guffa 21 August 2018 в 01:25
поделиться
Другие вопросы по тегам:

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