Программания 2008
4 октября 2008 года прошел очередной конкурс “Программания” от компании (экс Validio) Global Logic. Это был 13 по счету конкурс, проходил он в здании Харьковского театра оперы и балета – народу было очень много. Стоит отметить, что в этом году конкурс проходил не только в Харькове, а еще в Киеве и Львове. Призы были стандартные (много было мониторов), главный приз – MacBook Pro 🙂
В этом году вопросы мне понравились – отвечал на темы PHP, Dynamic HTML, AJAX, XML, Основы SQL, English ну и совсем чуть чуть .NET.
Количество граблей было достаточным. Каждый второй вопрос, естественно, был с подвохом. Поделюсь с вами этими каверзными вопросами.
Dynamic HTML
1. Как будет выглядеть блок? (какой будет вид bordera?)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span style='color:#7f0055; '><!</span><span style='color:#7f0055; '>DOCTYPE</span> <span style='color:#7f0055; '>HTML</span> <span style='color:#7f0055; font-weight:bold; '>PUBLIC</span> <span style='color:#2a00ff; '>"-//W3C//DTD HTML 4.0 Transitional//EN"</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '><</span><span style='color:#7f0055; font-weight:bold; '>html</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '><</span><span style='color:#7f0055; font-weight:bold; '>head</span><span style='color:#7f0055; '>></span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '><</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>s</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>t</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>y</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>></span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>.</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>{</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>b</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>:</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>1</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>p</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>x</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>s</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>i</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>;</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>}</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>.</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>b</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>u</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>{</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>b</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>:</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>1</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>p</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>x</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>s</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>i</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>b</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>u</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>;</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>}</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>.</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>y</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>w</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>{</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>b</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>r</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>:</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>1</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>p</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>x</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>s</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>i</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>d</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>y</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>o</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>w</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>;</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>}</span> <span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '><</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>/</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>s</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>t</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>y</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>l</span><span style='color:#ffffff; background:#dd0000; font-weight:bold; font-style:italic; '>e</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '></</span><span style='color:#7f0055; font-weight:bold; '>head</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '><</span><span style='color:#7f0055; font-weight:bold; '>body</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '><</span><span style='color:#7f0055; font-weight:bold; '>div</span> class=<span style='color:#2a00ff; '>"</span><span style='color:#2a00ff; '>red yellow blue</span><span style='color:#2a00ff; '>"</span><span style='color:#7f0055; '>></span> Block with border <span style='color:#7f0055; '></</span><span style='color:#7f0055; font-weight:bold; '>div</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '></</span><span style='color:#7f0055; font-weight:bold; '>body</span><span style='color:#7f0055; '>></span> <span style='color:#7f0055; '></</span><span style='color:#7f0055; font-weight:bold; '>html</span><span style='color:#7f0055; '>></span> |
И как вы думаете?
Ответ: на самом деле блок будет иметь ЖЕЛТУЮ рамку, т.к. CSS класс “yellow” был определен последним в секции style (а порядок задания классов в элементе не имеет значения).
2. Вопрос по поводу приведения типов в javascript:
Каким будет значение переменной a?
1 |
<span style='color:#7f0055; font-weight:bold; '>var</span> a = 1 + 2 + <span style='color:#2a00ff; '>"3"</span>; |
Ответ: 33
Javascript изначально выполнит сложение целых чисел, а потом произведет конкатенацию со строкой.
3. Подвох при работе со строками в javascript (replace)
Каким будет значение переменной s?
1 2 |
<span style='color:#7f0055; font-weight:bold; '>var</span> s = <span style='color:#2a00ff; '>"000,777,000,777"</span>; s = s.<span style='color:#7f0055; font-weight:bold; '>replace</span>(<span style='color:#2a00ff; '>"000"</span>, <span style='color:#2a00ff; '>"111"</span>); |
На первый взгляд, хочется сказать, что результирующая строка будет выглядеть так: “111,777,111,777”.
Но в действительности метод replace предназначен для работы с регулярными выражениями. В данном случае первый параметр – строка “000” рассматривается как регулярное выражение и результатом будет строка “111,777,000,777” (перестановка выполнится при первом нахождении подстроки “000”).
Если же вам нужно заменить подстроку в строке javascript, то следует добавить в регулярное выражение модификатор g (global):
1 2 |
<span style='color:#7f0055; font-weight:bold; '>var</span> s = <span style='color:#2a00ff; '>"000,777,000,777"</span>; s = s.<span style='color:#7f0055; font-weight:bold; '>replace</span>(<span style='color:#2a00ff; '>/</span><span style='color:#2a00ff; '>000</span><span style='color:#2a00ff; '>/</span><span style='color:#7f0055; font-weight:bold; '>g</span>, <span style='color:#2a00ff; '>"111"</span>); |
Здесь уже выполнится замена всех вхождений подстроки и результатом будет “111,777,111,777”.
4. Добавление комментария в div средствами DOM.
В принципе, ничего сложного. Просто никогда не пользовался – да и вообще не пойму кому такое нужно?
Например, есть div:
1 2 3 |
<span style='color:#7f0055; '><</span><span style='color:#7f0055; font-weight:bold; '>div</span> id=<span style='color:#2a00ff; '>"block"</span><span style='color:#7f0055; '>></span> Нуждаюсь в комментарии <span style='color:#7f0055; '></</span><span style='color:#7f0055; font-weight:bold; '>div</span><span style='color:#7f0055; '>></span> |
Добавление комментария:
1 |
document.getElementById(<span style='color:#2a00ff; '>"block"</span>).appendChild(document.createComment(<span style='color:#2a00ff; '>"русский коммент"</span>)); |
ИМХО, этот вопрос был включен с мыслью о том, что никто не использует это на практике. document.createComment встречается гораздо реже чем document.createElement 🙂
По PHP граблей было куда меньше, так что эти вопросы рассматривать не буду. Пожалуй, единственное, что было новым для меня – один момент относительно обработки исключительных ситуаций. Информацию эту узнал в тот же день, когда пошел на очередную пару по JAVA (я теперь каждую субботу еще и на JAVA хожу :).
Момент заключается в следующем: если у нас есть наследники класса Exception (например, MyException) и если в блоке try возможен выброс исключений родительского класса и класса наследника, то отлавливать их нужно в порядке от наследника до родителя. Следующий пример показывает корректный вариант следования блоков catch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span style='color:#7f0055; background:#ffffe8; '><?php</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>class</span><span style='color:#000000; background:#ffffe8; '> MyException </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>extends</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>Exception</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>public</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>function</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>__construct</span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#000000; background:#ffffe8; '>$msg</span><span style='color:#000000; background:#ffffe8; '>,</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>$code</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> parent</span><span style='color:#000000; background:#ffffe8; '>::</span><span style='color:#000000; background:#ffffe8; '>__construct</span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#000000; background:#ffffe8; '>$msg</span><span style='color:#000000; background:#ffffe8; '>,</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>$code</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>try</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>throw</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>new</span><span style='color:#000000; background:#ffffe8; '> MyException</span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#2a00ff; background:#ffffe8; '>'Some message'</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '> </span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>catch</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#000000; background:#ffffe8; '>MyException </span><span style='color:#000000; background:#ffffe8; '>$e</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>echo</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#2a00ff; background:#ffffe8; '>"MyException"</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>catch</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>Exception</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>$e</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>echo</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#2a00ff; background:#ffffe8; '>"Exception (base)"</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; '>?></span> |
Данный пример выводит строку “MyException” – попытка обработать исключение типа MyException удалась.
Но если поменять порядок блоков catch:
1 2 3 4 5 6 7 8 9 10 11 |
<span style='color:#7f0055; background:#ffffe8; '><?php</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>try</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>throw</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>new</span><span style='color:#000000; background:#ffffe8; '> MyException</span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#2a00ff; background:#ffffe8; '>'Some message'</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '> </span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>catch</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>Exception</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>$e</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>echo</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#2a00ff; background:#ffffe8; '>"Exception (base)"</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>catch</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#000000; background:#ffffe8; '>MyException </span><span style='color:#000000; background:#ffffe8; '>$e</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>{</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '> </span><span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>echo</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#2a00ff; background:#ffffe8; '>"MyException"</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>}</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; '>?></span> |
В этом случае сработает первый блок catch и результатом будет строка “Exception (base)”
Вот еще вспомнил вопрос, подвох в котором был касательно ссылок в PHP.
1 2 3 4 5 6 7 |
<span style='color:#7f0055; background:#ffffe8; '><?php</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>$a</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>=</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>1</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '>$b</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>=</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>&</span><span style='color:#000000; background:#ffffe8; '>$a</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>unset</span><span style='color:#000000; background:#ffffe8; '>(</span><span style='color:#000000; background:#ffffe8; '>$a</span><span style='color:#000000; background:#ffffe8; '>)</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; font-weight:bold; '>echo</span><span style='color:#000000; background:#ffffe8; '> </span><span style='color:#000000; background:#ffffe8; '>$b</span><span style='color:#000000; background:#ffffe8; '>;</span><span style='color:#000000; background:#ffffe8; '></span> <span style='color:#7f0055; background:#ffffe8; '>?></span> |
Значение переменной $b будет равно 1. Ссылка дает возможность переменным указывать на одно и то же содержание. Это не значит, что $b указывает на $a, поэтому значение $b по прежнему 1.
Пожалуй это все что хотел написать по данной теме.