Эта ошибка чаще всего встречается при попытке ссылаться на значение массива с помощью ключевого слова для интерполяции внутри строки с двумя кавычками , когда вся конструкция комплексной переменной не заключена в {}
.
Это приведет к Unexpected T_ENCAPSED_AND_WHITESPACE
:
echo "This is a double-quoted string with a quoted array key in $array['key']";
//---------------------------------------------------------------------^^^^^
В строке с двойными кавычками PHP разрешает использовать строки ключей ключей без кавычек и не выдаст E_NOTICE
. Таким образом, вышесказанное может быть записано как:
echo "This is a double-quoted string with an un-quoted array key in $array[key]";
//------------------------------------------------------------------------^^^^^
Вся сложная переменная массива и ключ (ы) могут быть заключены в {}
, и в этом случае они должны быть указаны чтобы избежать E_NOTICE
. Документация PHP рекомендует этот синтаксис для сложных переменных.
echo "This is a double-quoted string with a quoted array key in {$array['key']}";
//--------------------------------------------------------------^^^^^^^^^^^^^^^
// Or a complex array property of an object:
echo "This is a a double-quoted string with a complex {$object->property->array['key']}";
Конечно, альтернатива любой из вышеперечисленного заключается в объединении переменной массива in вместо интерполировать его:
echo "This is a double-quoted string with an array variable " . $array['key'] . " concatenated inside.";
//----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^
Для справки см. раздел «Переменная синтаксический анализ» в странице руководства PHP Strings
Колледжу Seneca в Торонто приспособили программу к точно этому - новички к разработке Mozilla.
Выезд некоторые из этих ссылок:
Реального мира Еженедельное Расписание
Некоторые лаборатории, если Вы хотите погрузиться прямо в:
Лаборатория: Изучение Совместной Разработки (Осень 2008 года)
Лаборатория: Создание Проектов С открытым исходным кодом (Осень 2008 года)
Лаборатория: Реальный мир Mozilla - Исходный код, Читая
Лаборатория: Погружение в Mozilla - Отладка лаборатории Mozilla
: Исправление ошибки Thunderbird
Лаборатория: Изменение Браузера
Лаборатория: Изменение Firefox с помощью расширения
Лаборатория: Реальный мир Mozilla - Первый Компонент XPCOM
Лаборатория: Реальный мир Mozilla - Добавляющий хром к первому компоненту XPCOM
, Если Вы нуждаетесь в какой-либо помощи, используйте IRC: #seneca на irc.mozilla.org. Не волнуйтесь, не являетесь ли Вы (Seneca) студентом, много людей во всем мире (люди от Seneca, люди от Mozilla и другие) находится в этом канале, цель состоит в том, чтобы рассказать разработчикам об открытом исходном коде в целом и проекте Mozilla конкретно.
Удачи!
Вот нисходящий ответ (большинство других является восходящим):
Firefox приложение XUL (см. также: XUL); XUL является вариантом XML, используемой для описания GUI, который интерпретируется рендерером, почти такой же способ, которым HTML представляется в браузере, но XUL включает меню браузера, кнопки, строку состояния, сочетания клавиш, и т.д. Это довольно аккуратно; я был в состоянии соединить некоторые простые приложения для GUI намного быстрее в XUL, чем в других платформах (и это платформенно независимо!).
, Если Вы смотрите в каталоге приложения Firefox (везде, где Вы установили его в своей системе), Вы будете видеть "хромовый" каталог с набором .jar файлов. Это просто .zip файлы с конкретной структурой (включая декларацию), и можно просмотреть их сами.
Большая часть браузера Firefox является на самом деле XUL + JavaScript. Это действительно использует много библиотек низшего уровня, записанных в C++ и доступных для JavaScript через XPCOM, но если Вы хотите понять (& измените), высокоуровневое поведение, части XUL+Javascript являются, вероятно, местом для запуска.
редактирование: p.s. здесь являются некоторыми учебными руководствами/ссылками для XUL: 1 2 и также книжное
редактирование O'Reilly: документы XUL очень похожи на документы HTML (только больше!) в пути они взаимодействуют с пользователем + события. Существует модель документа для динамично изменение XUL, и существует модели событий , которые имеют слушателей события. Оба действия точно так же, как HTML + DOM + его модель событий, но с более богатым набором встроенных объектов/интерфейсов/событий/и т.д. Обработчики событий являются интерфейсами конкретного вида и могут быть реализованы объектами JavaScript (объявленный в XUL с onclick="blah()"
, или добавил динамично через вызовы JavaScript к addEventListener()
- оба - точно тот же синтаксис как события HTML в Firefox), или C++ или другими языками, которые могут реализовать объекты XPCOM с надлежащими интерфейсами.
Один способ запуститься состоял бы в том, чтобы посмотреть на некоторые недавно исправленные ошибки в Firefox (см. Bugzilla), и смотрите на то, как они были зафиксированы.
, Который сказал. Кодовая база Firefox является очень большой, и вероятно, что никакой человек не понимает все это, таким образом, это была бы хорошая идея начаться с маленьким разделом (скажите избранное), и попытайтесь найти код для него и посмотреть на то, как это работает. Снова, разрешенные ошибки и файлы, на которые они влияют, были бы хорошим способом определить некоторые соответствующие нормы для запуска с.
я работал с кодом Mozilla (точно mozilla/nss/security). насколько мое понимание Mozilla идет:
Это следует за многоуровневой архитектурой с уровнем NSPR (Netscape Портативное Время выполнения) в нижней части, которая взаимодействует с Операционными системами.
получают исходный код от
https://developer.mozilla.org/En/Download_Mozilla_Source_Code и создают его в Вашей рабочей среде (насколько я знаю, что это поддерживает большое разнообразие платформ/архитектуры)
соединение, которому сообщество разработчиков Mozilla / пытается помочь посредством тестирования некоторых компонентов.
для кодирования для Mozilla пройдите: http://www.mozilla.org/hacking/ (стандарты мобильности C++ необходимость, если Вы - программист на C++).
надежда часть вышеупомянутого могла бы помочь Вам начало работы.