Почему часть Suhosin ядра PHP не?

Это происходит потому, что lists_of_filter повторяется только вне цикла. Вне цикла у вас есть exclude_label == 'something', поэтому вы получаете неожиданные результаты. Чтобы проверить это, вы можете поместить строку exclude_label = 'exclude':

lists_to_filter = [
    ['a', 'exclude'],
    ['b']
]

for exclude_label in ['exclude', 'something']:
    lists_to_filter = (labels_list for labels_list in lists_to_filter if exclude_label not in labels_list)

exclude_label = 'exclude'
lists_to_filter = list(lists_to_filter)
print(lists_to_filter)  # [['b']]

Документ для выражений генератора говорит, что « Последующий для предложений и любое условие фильтра в крайнем левом для предложения не может быть оценена в пределах объема, так как они могут зависеть от значений, полученных из самой левой итерации. ". В вашем случае условие фильтра if exclude_label ... зависит от значения, полученного из цикла for exclude_label in ....

13
задан fuentesjr 23 February 2009 в 09:28
поделиться

3 ответа

Одним из основных парней позади Suhosin является Stefan Esser. Stefan, кажется, имел на продолжающемся разногласии с базовыми разработчиками PHP относительно безопасности за последние несколько лет. Он был также одним из парней позади месяца ошибок PHP, который был предназначен для привлечения внимания к (по мнению Stefan) удручающее состояние базовой безопасности PHP.

Учитывая, что парни Suhosin решили пойти своим собственным путем и работой вне проекта PHP, я могу предположить что:

  • Возможно, что Suhosin не был внесен назад для включения.
  • Парни Suhosin не смогли убедить команду PHP в, он - полноценность или не попробовал.
  • Базовая команда PHP не открыта для вкладов от парней позади Suhosin.

Некоторые дистрибутивы Linux, такие как Debian (Травление и Lenny), Ubuntu и Arch включают патч Suhosin в свой пакет PHP, таким образом, в тех системах Вы будете часто находить, что это включено по умолчанию. Red Hat получил дистрибутивы (Red Hat Enterprise, CentOS, Fedora, и т.д.) не включают Suhosin в их пакеты PHP.

Примечание: У меня нет связи с Ядром PHP devs, или Suhosin, но разумное предположение на основе некоторых личностей включил.

16
ответ дан 1 December 2019 в 23:48
поделиться

Я предположил бы, что главные причины для php команды не включать Suhosin:

  • Это может повредиться существующий (плохо записанный) php код
  • Это может повредить (плохо записанный) php расширения (я помню Оптимизатор Зенда, являющийся проблематичным),
1
ответ дан 1 December 2019 в 23:48
поделиться

Интересно они внесли свой код назад в основной php проект?

Это обычно, как новый код интегрируется в проекты с открытым исходным кодом.

0
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

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