Настройка Visual Studio Code для разработки PHP
Visual Studio Code (или просто VS Code) – бесплатный редактор исходного кода или интегрированная среда разработки (IDE), доступная для всех основных операционных систем.
Благодаря большому набору расширений VS Code можно легко настроить для удовлетворения самых разнообразных потребностей разработки. В этом руководстве вы узнаете, как настроить Visual Studio Code для работы над проектами PHP.
Требования
Чтобы следовать этому руководству, вам необходимо загрузить и установить соответствующую версию Visual Studio Code для вашей операционной системы.
Инструкции в этом руководстве были проверены на настольном компьютере Ubuntu 20.04, но они должны без проблем работать и в других операционных системах, поддерживаемых VS Code. Однако обратите внимание, что в системах MacOS сочетания клавиш могут немного отличаться.
1: Установка PHP-расширений VS Code
VS Code распознает PHP-код и помогает с подсветкой синтаксиса, базовой отладкой и отступами кода сразу же после установки. Этого вполне достаточно для быстрого редактирования или для работы с отдельными сценариями PHP. Однако более крупные проекты сложно обслуживать без дополнительного контекста вокруг кода и без наглядного понимания того, что делает каждый файл и как он интегрируется в проект.
Существует ряд расширений VS Code, которые помогут повысить вашу продуктивность при работе над проектами PHP. В этом руководстве мы установим и настроим PHP Intelephense, популярное расширение PHP для VS Code, которое предоставляет несколько дополнительных функций: улучшенное автозаполнение кода, навигацию между компонентами, всплывающие подсказки с полезной информацией при наведении курсора мыши, автоматическое форматирование кода и создание отчетов об ошибках в реальном времени на основе статического анализа кода.
Откройте вкладку расширений, нажав на последний значок в левой строке меню или клавиши CTRL+SHIFT+X. Это вызовет меню боковой панели с полем поиска и списком популярных или рекомендуемых расширений. Введите «php» или «intelephense», чтобы найти нужное нам расширение PHP Intelephense. Затем нажмите кнопку Install, чтобы установить и включить расширение.
Официальная документация Intelephense рекомендует после завершения установки отключить встроенное расширение PHP Language Features, которое поставляется с VS Code.
Чтобы сделать это, введите @builtin php в поле поиска расширений. Когда вы найдете его, нажмите на значок настроек для расширения PHP Language Features и выберите параметр Disable в выпадающем меню.
Если в VS Code у вас есть открытые файлы, вам необходимо перезагрузить редактор, чтобы изменения вступили в силу.
Вы можете установить другие расширения, следуя описанному выше процессу, но имейте в виду, что некоторые расширения потребуют установки дополнительного программного обеспечения в вашей системе. Проверьте документацию по интересующему вас расширению, чтобы убедиться, что у вас установлены соответствующие зависимости.
2: Импорт или создание нового проекта PHP
Чтобы импортировать существующий проект PHP в VS Code, нажмите на первый значок в левой строке меню или клавиши CTRL+SHIFT+E – так вы сможете получить доступ к проводнику файлов. Нажмите кнопку Open Folder и выберите каталог своего проекта. Если вы создаете новый проект, вы можете создать новую папку и выбрать ее в качестве каталога вашего проекта.
В окне проводника теперь будет отображаться дерево каталогов проекта, что даст вам быстрый доступ к необходимым файлам и каталогам.
3: Настройка темы и шрифта редактора (опционально)
В настройке внешнего вида редактора нет острой необходимости, но иногда это бывает полезно – так можно сделать его более удобным для работы в долгосрочной перспективе. Разработчики много времени проводят в IDE (чем и является VS Code), и по этой причине важно убедиться, что шрифт редактора имеет соответствующий размер, что контрастность не утомляет глаза слишком быстро и код удобно читать.
Что касается удобочитаемости, здесь нет единой рекомендации. Советуем вам самостоятельно поэкспериментировать с разными темами и шрифтами, чтобы подобрать настройку, которая вам подходит.
Изменение темы VS Code
VS Code поставляется с несколькими темами, которые позволяют изменять цвета, используемые в интерфейсе редактора и при выделении кода. По умолчанию включены темный и светлый стили.
Перейдите в File -> Preferences -> Color Theme или нажмите CTRL+K+T, чтобы выбрать другую тему для VS Code.
Также можно установить расширения для темы, чтобы дополнительно настроить внешний вид VS Code. Если вы выполните поиск (CTRL + SHIFT + X), вы найдете несколько расширений для темы с разными стилями и цветами, включая цветовые схемы, перенесенные из других популярных редакторов и платформ.
Настройка шрифта
В целом, настройки шрифтов VS Code по умолчанию достаточно хороши – многие пользователи предпочитают не менять их. Но если вы хотите, вы можете настроить размер и тип шрифта редактора для повышения удобочитаемости.
Если вам нужно изменить размер шрифта или выбрать другой тип, вы можете перейти в меню File -> Preferences -> Settings, а затем выбрать Text Editor в левом меню. В открывшемся подменю нажмите Font. Этот раздел содержит настройки семейств и размеров шрифтов, которые вы можете выбрать по своему усмотрению.
Изменения немедленно сохраняются и применяются ко всем текущим открытым файлам.
Заключение
Visual Studio Code – это легкий, но мощный редактор кода, который можно настроить в соответствии с потребностями большинства разработчиков. В этом руководстве вы узнали, как установить и настроить расширение PHP Intelephense для работы над проектами PHP, как импортировать и создавать новые проекты в VS Code и как настроить внешний вид редактора, чтобы сделать процесс разработки более удобным.
Читайте также:
- Как написать свою первую программу на PHP
- Автоматизация задач PHP с помощью Crontab
- Форматирование кода в Visual Studio Code с помощью ESLint
VS Code: базовые возможности для работы с языком PHP
Текстовый редактор «Visual Studio Code» (сокращенно «VS Code») обладает базовой поддержкой языка программирования PHP, так сказать, «из коробки» (то есть эта возможность доступна пользователю сразу после установки редактора на компьютер, без дополнительных загрузок). Об этом рассказано в следующей статье на официальном сайте редактора:
Я открыл в редакторе «VS Code» папку («Файл – Открыть папку. ») с файлами и подпапками веб-приложения «WordPress», которая у меня на компьютере находится в следующем местоположении:
C:\inetpub\wwwroot\wp\
После этого дерево файлов и подпапок можно просмотреть в «Проводнике» («Вид – Проводник»). Вот как это выглядит у меня:
На иллюстрации выше видно, что всем файлам с расширением «.php» сопоставлена иконка с фиолетовым слоном (синий слон является официальным маскотом языка PHP, правда, в изображениях цвет не всегда используют синий).
Я щелкнул в «Проводнике» на имя одного из файлов с расширением «.php» и он открылся в окне справа от «Проводника»:

На иллюстрации выше видно, что автоматически сработала подсветка синтаксиса для языка PHP. В строке состояния редактора «VS Code» видно, что правильно определился языковой режим, так как там появилась отметка «PHP».
Перед дальнейшей работой с программами на языке PHP я бы рекомендовал заглянуть в «Параметры» (настройки редактора), относящиеся к настройке встроенных возможностей редактора для работы с языком PHP. Чтобы открыть окно настройки параметров, можно нажать комбинацию клавиш «Ctrl+,» (вторая клавиша в этой комбинации — запятая в латинской раскладке клавиатуры). После того, как окно параметров откроется, в строке поиска сверху можно набрать слово «php», чтобы отфильтровать только те параметры, которые содержат в своем названии это слово (регистр букв не имеет значения). Вот как это выглядит у меня:

На иллюстрации выше видно, что всего нашлось 5 подходящих настроек, в том числе 4 в разделе настроек, который называется «PHP». Эти четыре настройки нас сейчас и интересуют. На иллюстрации выше показано, как они настроены по умолчанию. Единственное, что сразу нужно сделать — настроить параметр с идентификатором «php.validate.executablePath» (он же — «PHP > Validate: Executable Path»). В этом параметре следует указать путь к исполняемому файлу «php.exe» в дистрибутиве интерпретатора PHP.
Чтобы настроить этот параметр, можно нажать на прилагающуюся ссылку «Изменить в settings.json». После этого в отдельном окне будет открыт файл настроек «settings.json», в который следует ввести нужную информацию. При этом следует отметить, что файлов настроек «settings.json» существует несколько на разных уровнях: на уровне пользователя, на уровне рабочей области (рабочей папки или папок), подробнее про это можно прочитать в статье «User and Workspace Settings» документации редактора.
Как видно на иллюстрации выше, у меня выбрана вкладка параметров «Пользователь», поэтому при нажатии на ссылку «Изменить в settings.json» будет открыт для редактирования файл настроек «settings.json» текущего пользователя компьютера. У меня этот файл хранится в следующем местоположении:
C:\Users\Илья\AppData\Roaming\Code\User\settings.json
По расширению файла должно быть понятно, что этот файл написан в формате JSON, для которого редактор «VS Code» тоже умеет делать подсветку синтаксиса и выдавать умные подсказки в ходе редактирования этого файла.
После открытия файла «settings.json» по вышеописанной ссылке «Изменить в settings.json» в файл автоматически будет добавлена нужная строка:
"php.validate.executablePath": ""
От нас требуется вписать путь к файлу «php.exe» внутрь кавычек, находящихся в конце этой строки. Тут есть одна важная тонкость с символом-разделителем папок при вводе пути к файлу «php.exe». В операционных системах «Windows» принято в качестве такого символа использовать символ обратной косой черты \ (backslash), но в данном случае использование этого символа в пути к файлу «php.exe» будет интерпретировано неверно. Вместо символа обратной косой черты \ здесь следует использовать символ косой черты / (slash). Вот как я ввел этот параметр у себя:
"php.validate.executablePath": "C:/Program Files/php-8.1.10-nts-Win32-vs16-x64/php.exe"
После ввода этого параметра файл «settings.json» следует сохранить, после чего его можно закрыть. После этого окно с параметрами тоже можно закрыть.
Настройка этого параметра нужна для автоматической проверки на правильность (linting) кода программ на языке PHP. Как видно из настроек выше, автоматическая проверка кода по умолчанию проводится при каждом сохранении («onSave») файла с расширением «.php».
Здесь описаны только некоторые встроенные возможности редактора «VS Code» по работе с программами на языке PHP. Но для редактора «VS Code» существует множество расширений для работы с языком PHP. Их очень легко можно найти, загрузить и установить с помощью магазина расширений («Вид – Расширения»).
Если вы загрузили и установили расширения, дублирующие встроенные возможности редактора «VS Code» по работе с языком PHP (то есть делающие то же самое, но лучше), то встроенные возможности можно отключить. См. настройки, описанные выше: для отключения нужно просто снять две первые галки.
Также я хочу еще изучить вопрос настройки работы с отладчиком для языка PHP. Но этот вопрос достоин отдельного поста.
VS Code как IDE для PHP
Visual Studio Code при помощи встроенных возможностей, сторнних расширений и библиотек PHP можно превратить в полноценную IDE для разработки на PHP.
Visual Studio Code при помощи встроенных возможностей, сторонних расширений и библиотек PHP можно превратить в полноценную IDE для разработки на PHP.
В статье рассмотрен лишь тот набор расширений/модулей, с которым работает автор статьи, на самом деле расширений много и у рассмотренных расширений есть аналоги.
Требования к IDE:
- удобство написания кода:
- автодополнение, статический анализ и навигация по коду
- стандартизация оформления кода
#Написание кода
- автодополнение кода (даже юзерского)
- навигацию по коду (горячими клавишами или через контекстное меню)
- статический анализ и подсветку некорретного кода, на основании анализа
Все это на основании той версии PHP которая будет выбрана в настройках расширения. Можно установить так:
Есть настройки, но пользоваться можно сразу после установки.
Расширение PHP Namespace Resolver используется для удобного импорта namespace (причем с сортировкой) и создания новых пространств имен из файлов. Настроек не много. Мелочь, но +5 к удобству.
Расширение PHP DocBlocker предоставляет функционал для удобного и автоматического комментирования DocBlock.
Расширение phpcs предоставляет возможность оформлять код в соответсвии с выбранным стандартом. Неверно составленный код будет подсвечиваться.
Для настройки phpcs нужно установить расширение для VS Code (по ссылке выше) и пакет php_codesniffer для Composer:
composer require --dev squizlabs/php_codesnifferЗатем обзательно в настройках расширения нужно выбрать стандарт ( PEAR , PHPCS , PSR1 , PSR2 , PSR12 , Squiz , Zend ), для этого в конфиге необходимо указать ключ:
Intelephense подскажет какие классы/функции не подключены к файлу, Namespace Resolver позволит их импортировать в пару кликов мыши, а DocBlock поможет прокомментировать свой код чтобы Intelephense мог в любом месте показать подсказку по этому коду. phpcs позволит составить код в одном из выбранных стандартов.
Каждое расширение можно настроить глобально или для текущего проекта. Настройки для текущего проекта будут храниться в директории .vscode/settings.json относительно корня проекта.
#Статический анализ
Статических анализаторов для php, есть несколько (ссылка на почитать), я использую phpstan, причина одна — с него начал, его и дальше использую.
В минимальном варианте достаточно установить пакет phpstan/phpstan через Composer:
composer require --dev phpstan/phpstanИ через терминал можно запускать так ([[https://phpstan.org/user-guide/command-line-usage ссылка на документацию]]):
vendor/bin/phpstan analyse -l 9 srcА для отображения результатов работы статического анализатора phpstan в интерфейсе VS Code, нужно установить расширение phpstan, создать конфиг phpstan.neon (ссылка):
parameters: level: 6 paths: - srcИ в конфиг .vscode/settings.json добавить путь до phpstan:
#Отладка
Расширение PHP Debug в совокупности с модулем PHP xdebug позволяют производить отладку PHP кода. Можно построчно выполнить файл, просмотреть стек вызовов и значения переменных. При этом запускать можно как отдельный файл, так и целый сайт о_О.
Установим модуль xdebug :
# для текущей версии php apt install php-xdebug # для конкретной версии php apt install php7.3-xdebugТеперь открываем файл /etc/php/VERSION/mods-available/xdebug.ini :
zend_extension=xdebug.so xdebug.remote_handler = dbgp xdebug.client_host = localhost xdebug.client_port = 9005 xdebug.mode=coverage,debug xdebug.start_with_request = yesТеперь в корне проекта создаем .vscode/launch.json со следующим содержимым:
< "version": "0.2.0", "configurations": [ < "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9005, >, < "name": "Launch currently open script", "type": "php", "request": "launch", "program": "$", "cwd": "$", "port": 0, "runtimeArgs": [ "-dxdebug.start_with_request=yes" ], "env": < "XDEBUG_MODE": "debug,develop", "XDEBUG_CONFIG": "client_port=$" > > ] >Здесь создается 2 конфигурации:
- Listen for Xdebug — прослушивать xdebug. Если в текущем проекте, в каком-то файле поставить брекпоинт и запустить файл на исполнение (((из консоли или из браузера через локальный веб-сервер))) тогда отладчик остановится в скрипте на брекпоинте.
- Launch currently open script — запустить текущий файл на исполнение и отладку.
Значение ключа port из конфигурации Listen for Xdebug должно быть точно таким же как и в конфиге модуля PHP xdebug xdebug.client_port .
Вообще-то расширение PHP Debug по умолчанию предусматривает еще один конфиг Launch Built-in web server для запуска встроенного веб-сервера, но в моем случае это не нужно, так как использую локальный LAMP, а теперь вообще все в Docker и такая отладка в Docker.
#Тестирование
Расширения для минимизации действий по запуску тестиров кода показались мне избыточны, потому что Visual Studio Code предоставляет функционал custom tasks, при помощи которого можно все это организовать.
Предположим что проект использует composer и PHPUnit (хотя вовсе необзяательно), а тесты находятся в директории tests .
Создадим файл относительно корня проекта .vscode/tasks.json и запишем в него следующее:
< "version": "2.0.0", "tasks": [ < "label": "Run unit tests all", "type": "shell", "command": "vendor/bin/phpunit", "args": [ "--colors=always", "--coverage-html", "coverage-report-html", "--bootstrap", "tests/bootstrap.php", "tests/" ], "group": "test", "presentation": < "reveal": "always", "panel": "new" >>, < "label": "Run unit test current file", "type": "shell", "command": "vendor/bin/phpunit", "args": [ "--colors=always", "--coverage-html", "coverage-report-html", "--bootstrap", "tests/bootstrap.php", "$" ], "group": "test", "presentation": < "reveal": "always", "panel": "new" >> ] >Здесь происходит создание двух заданий:
- Run unit tests all — запуск тестирования всей директории
- Run unit test current file — запуск текущего открытого файла на тестирование
Теперь идем в Terminal => Run Task , затем из появившего списка выбираем нужное задание.
#Итог
Такими не сложными действиями мы превратили редактор кода «»Visual Studio Code в полноценную IDE для разработки проектов на PHP»». Не все инструменты рассмотрены полностью, некоторые лишь очень поверхностно, но дальнейшую тонкую настройку оставляю в качестве домашнего задания 🙂
В телеграм канале DevOps от первого лица можно оставить комментарий или почитать интересные истории из практики DevOps
PHP not found
В VScode установил расширения php intelephense и php server. Также в настройках (в json файл) добавил:
«php.validate.executablePath»: «c:/php/php.exe»,
«phpserver.phpPath»: «c:/php/php.exe»Предварительно разархивировав последнюю версию php для Windows х64 (разрядность совпадает. Проверил) здесь windows.php.net/download/
Но не смотря на это. На ноутбуке выдает ошибку PHP not found, когда я пытаюсь запустить PHP Server: Serve Project. Однако, повторив все те же действия на компьютере, я пришел к успеху
Может быть я что-то еще пропустил? Кто-нибудь сталкивался с этой проблемой?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Fatal error: Class ‘PEAR_Error’ not found in C:\xampp\php\PEAR\DB.php on line 947
Здравствуйте. Помогите мне с мой проблемой пожалуйста. Проблема в том что, какой бы я код не.
PHP Unit Class not found
Доброго всем времени суток! Решил подучить PHPUnit и после запуска первого теста столкнулся с.Not Found The requested URL /php/userinfo.txt was not found on this server
мой сайт и сервер. файл 10000% по пути этому есть на сервере, но через браузер не открываетсяFile resp_block.php not found
Как настроить отзывы на движке DLE 10.5. Шаблон: overgame. Выдаёт вот это:Ошибка PHP Fatal error: Class ‘XSLTProcessor’ not found
Добрый день. Работает ли transformToXML обрабатывая xml документ где текст написан на кириллице или.191 / 138 / 36
Регистрация: 19.11.2020
Сообщений: 881
Так может нужно указать путь к php.exe а не сам файл?
Регистрация: 03.12.2016
Сообщений: 45@OpXiv, ну так я указал путь к exe
Сообщение от Dolya08 
«php.validate.executablePath»: «c:/php/php.exe»,
«phpserver.phpPath»: «c:/php/php.exe»
Невнимательный
2446 / 827 / 281
Регистрация: 08.02.2013
Сообщений: 5,383
Записей в блоге: 2
Сообщение от Dolya08 
php server
Настройки там через File->Preferencess->Settings->>>Extensions->PHP_server_configuration
в setting.json если залезть то там в итоге такое у меня
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
{ "window.zoomLevel": 1, "security.workspace.trust.untrustedFiles": "open", "workbench.activityBar.visible": false, "editor.fontFamily": "'DejaVu Sans Mono', 'Courier New', monospace", "editor.wordWrap": "on", "files.exclude": { "**/CVS": false }, "editor.autoClosingBrackets": "always", "editor.autoClosingQuotes": "always", "editor.codeLensFontSize": 10, "telemetry.enableCrashReporter": false, "telemetry.enableTelemetry": false, "settingsSync.keybindingsPerPlatform": false, "window.autoDetectColorScheme": true, "workbench.colorTheme": "GitHub Light", "php.validate.executablePath": "c:/php-8/php", "launch": { "configurations": [ { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "$", "cwd": "$", "port": 0, "runtimeArgs": [ "-dxdebug.start_with_request=yes" ], "env": { "XDEBUG_MODE": "debug,develop", "XDEBUG_CONFIG": "client_port=$" } } ] }, "phpserver.phpConfigPath": "c:/php-8/php.ini", "phpserver.phpPath": "c:/php-8/php.exe", "phpserver.browser": "c:/PF/Opera/Opera.exe" }
создал файл 1.php
phpinfo();В контекстном меню такое только
Проект не создавал и файл в браузере не хочет открывать.
Сервер запускает и останавливает.
php.exe в процессах висит
В браузере http://localhost:3000/ показываетNot Found
The requested resource / was not found on this server.
Для какой папки запускает сервер не разобрался ещё
191 / 138 / 36
Регистрация: 19.11.2020
Сообщений: 881
Сообщение от ft4l 
«php.validate.executablePath»: «c:/php-8/php»,
А я это и имел введу.
Невнимательный
2446 / 827 / 281
Регистрация: 08.02.2013
Сообщений: 5,383
Записей в блоге: 2
Сообщение от OpXiv 
это php.exe ) просто без .exe тоже можно
Регистрация: 03.12.2016
Сообщений: 45
Т.е. разницы нету. Уже проверял
Невнимательный
2446 / 827 / 281
Регистрация: 08.02.2013
Сообщений: 5,383
Записей в блоге: 2
Сообщение от Dolya08 
Уже проверял
Php точно запускается ?
Запустите коммандную строку, выполните там
c:\php\php.exe -v или -i
Не помешало-бы посмотреть что за php с этим -v .
И не помешает переименовать там c:\php\php.ini-development в c:\php\php.ini
чтобы расширения можно было включать, уже не помню просило-ли VSCode каких нибудь расширений
Насколько понял жалуется на php.validate.executablePath
оно для проверки синтаксиса юзается
Сообщение от ft4l 
"port": 0,
Настроил у себя PHP-Debug
нужно было порт сделать 9000
и добавить туда же строчку «runtimeExecutable»:»c:/php-8/php.exe»,сейчас такое
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
{ "window.zoomLevel": 1, "security.workspace.trust.untrustedFiles": "open", "workbench.activityBar.visible": false, "editor.fontFamily": "'DejaVu Sans Mono', 'Courier New', monospace", "editor.wordWrap": "on", "files.exclude": { "**/CVS": false }, "editor.autoClosingBrackets": "always", "editor.autoClosingQuotes": "always", "editor.codeLensFontSize": 10, "telemetry.enableCrashReporter": false, "telemetry.enableTelemetry": false, "settingsSync.keybindingsPerPlatform": false, "window.autoDetectColorScheme": true, "workbench.colorTheme": "GitHub Light", "php.validate.executablePath": "c:/php-8/php", "launch": { "configurations": [ { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "$", "cwd": "$", "port": 9000, "runtimeExecutable":"c:/php-8/php.exe", "runtimeArgs": [ "-dxdebug.start_with_request=yes" ], "env": { "XDEBUG_MODE": "debug,develop", "XDEBUG_CONFIG": "client_port=$" } } ] }, "phpserver.phpConfigPath": "c:/php-8/php.ini", "phpserver.phpPath": "c:/php-8/php.exe", "phpserver.browser": "c:/PFO/Opera/Opera.exe" }
Закачал с https://xdebug.org/download dll для своей версии PHP 8.0 VS16 TS (32 bit)
У меня всё (32 bit) на 7-ке 64-бит
и только TS-Версия php на виндовс может включаться модулем apache
Закинул эту dll в c:/php-8/ext и переименовал в php_xdebug.dll
В php после перечисления всяких расширений добавил 4 строчки1 2 3 4 5 6 7 8
;extension=php_xsl.dll ;extension=php_imagick.dll zend_extension=php_opcache.dll zend_extension=xdebug [xdebug] xdebug.mode=debug xdebug.start_with_request=yes
Заработало.
И команда php -v в консоли стала выводитьPHP 8.0.6 (cli) (built: May 4 2021 23:32:43) ( ZTS Visual C++ 2019 x86 ) Copyright (c) The PHP Group Zend Engine v4.0.6, Copyright (c) Zend Technologies with Xdebug v3.1.0beta2, Copyright (c) 2002-2021, by Derick Rethans with Zend OPcache v8.0.6, Copyright (c), by Zend Technologies
