Что такое PHP и PHP-разработчик?

Обучение

История

Истоки PHP лежат в старом продукте, имевшем название PHP/FI. PHP/FI был создан Расмусом Лердорфом в 1995 году и представлял собой набор Perl-скриптов для ведения статистики посещений его резюме. Развитие web еще только начиналось, никаких специальных средств для решения этих задач не было, и к автору хлынул поток сообщений с вопросами.

Лердорф начал бесплатно раздавать свой инструментарий, названный «Personal Homepages Tools» (PHP) — («Инструменты для персональных домашних страниц»). Очень скоро потребовалась большая функциональность и Расмус пишет новую, намного более обширную версию на C, работающую с базами данных и позволяющую пользователям разрабатывать простейшие web-приложения.

Расмус Лердорф решил выложить исходный код PHP/FI на всеобщее обозрение, исправление ошибок и дополнение.

PHP/FI (Personal Home Page / Forms Interpreter — Персональная Домашняя страница / Интерпретатор Форм) включал в себя базовую функциональность сегодняшнего PHP. Он имел переменные в стиле Perl, автоматическую интерпретацию форм и возможность встраиваться в html-код. Собственно синтаксис языка имел много общего с Perl, хотя и был намного проще и ограниченнее.

В 1997 выходит PHP/FI 2.0. Вторая версия C-имплементации обозначила группу пользователей: несколько тысяч людей по всему миру, с примерно 50,000 доменами, что составляло около 1% всего числа доменов Интернета. Несмотря на то, что разработкой занималось уже несколько людей, PHP/FI 2.0 все еще оставался крупным проектом одного человека.

Официально PHP/FI 2.0 вышел только в ноябре 1997 года, после проведения большей части своей жизни в бета-версиях. Вскоре после выхода его заменили альфа-версией PHP 3.0.

PHP3

PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. В 1997 году Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) переписали код с начала: разработчики сочли PHP/FI 2.0 не пригодным для разработки приложения электронной коммерции, над которым они работали для проекта Университета. Для совместной работы над PHP 3.0 с помощью базы разработчиков PHP/FI 2.0 Энди, Расмус и Зив решили объединиться и объявить PHP 3.0 официальным преемником PHP/FI, разработка же PHP/FI была практически полностью прекращена.

Одной из сильнейших сторон PHP 3.0 была возможность расширения ядра. В последствии интерфейс написания расширений привлек к PHP множество сторонних разработчиков, работающих над своими модулями, что дало PHP возможность работать с огромным количеством баз данных, протоколов, поддерживать большое число API. Фактически, это и был главный ключ к успеху, но стоит добавить, что немаловажным шагом оказалась разработка нового, намного более мощного и полного синтаксиса с поддержкой ООП.

Абсолютно новый язык программирования получил новое имя. Разработчики отказались от дополнения о персональном использовании, которое имелось в аббревиатуре PHP/FI. Язык был назван просто ‘PHP’ — аббревиатура, содержащая рекурсивный акроним: ‘PHP: Hypertext Preprocessor’ (PHP: Препроцессор Гипертекста).

Первая статья о PHP была опубликована в чешском варианте ‘Computerworld’ весной 1998 и освещала PHP 3.0. Как и в случае с книгами, эта была первая в серии статья из множества посвященных PHP и опубликованных в различных известных журналах.

К концу 1998, PHP использовался десятками тысяч пользователей. Сотни тысяч web-сайтов сообщали о том, что они работают с использованием языка. В то время PHP 3.0 был установлен приблизительно на 10% серверах Интернета!

PHP 3.0 был официально выпущен в июне 1998 года после 9 месяцев публичного тестирования.

PHP4

К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Расширения дали PHP 3.0 возможность успешно работать с набором баз данных и поддерживать большое количество различных API и протоколов, но PHP 3.0 не имел качественной поддержки модулей и приложения работали не эффективно.

Новый движок, названный ‘Zend Engine’ (www.zend.com) (от имен создателей: Zeev и Andi), успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0, основанный на этом движке и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода своего предшественника PHP 3.0. В дополнение к улучшению производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

PHP5

Недавно вышла новая, версия PHP 5.6.x (PHP5.6.x). PHP5 использует новую версию «движка» Zend – Zend Engine 2.

В PHP5 объектная модель была значительно переработана. При этом было добавлено много новых возможностей, благодаря которым PHP5 получил некоторые черты таких объектно-ориентированных языков, как C++ и Java.

Изменения коснулись производительности встроенных стандартных функций PHP. По некоторым оценкам, скорость работы стандартных функций в PHP5 увеличилась на 40% и более.

Появились новые директивы файла настройки php.ini .Претерпела изменения и поддержка потоков. Были добавлены новые функции, а также функции графической библиотеки GD.

Поддержка XML в версии PHP5 стала полной, поддерживаются новые расширения DOM и XML.

Что за зверь?

PHP – это широко используемый язык программирования общего назначения с открытым исходным кодом, специально разработанный для написания web-приложений (сценариев), исполняющихся на Web-сервере.

Синтаксис языка берет начало из C, Java и Perl. PHP достаточно прост для изучения. Преимуществом PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц.

PHP (Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально — Personal Home Page Tools) — язык программирования, предназначенный для «оживления» страниц сайта. Например, с его помощью можно взять из базы данных записи новостей и отобразить их на странице. Или дать пользователям возможность комментировать статьи в вашем блоге. Или загружать картинки на хостинг, менять их размер и отображать в виде удобной галереи.

Другими словами, PHP позволяет создать полноценный сайт. Главная причина использования PHP — практичность, этот язык предоставляет программисту возможность быстрого и эффективного решения задач. Подавляющее большинство хостингов позволят разместить сайт, написанный на PHP.

PHP язык, сочетающий достоинства Perl и Си заключается в возможности создания HTML документов с внедренными командами PHP, с универсальным и ясным синтаксисом.

Значительным отличием PHP от какого-либо кода, выполняющегося на стороне клиента, например, JavaScript, является то, что PHP-скрипты выполняются на стороне сервера. Вы даже можете сконфигурировать свой сервер таким образом, чтобы HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.

PHP позволяет создавать качественные Web-приложения за очень короткие сроки, получая продукты, легко модифицируемые и поддерживаемые в будущем.

Сценарий РНР может состоять из 10 000 строк или из одной строки — все зависит от специфики вашей задачи. Вам не придется подгружать библиотеки, указывать специальные параметры компиляции или что-нибудь в этом роде. Механизм РНР просто начинает выполнять код после первой экранирующей последовательности (<?) и продолжает выполнение до того момента, когда он встретит парную экранирующую последовательность (?>). Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист.

PHP — язык, который может быть встроен непосредственно в html -код страниц, которые, в свою очередь будут корректно обрабатываться PHP -интерпретатором.

Можно использовать PHP для написания CGI-сценариев и избавиться от множества неудобных операторов вывода текста.

CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».

Эффективность

Эффективность является исключительно важным фактором при программировании для многопользовательских сред, к числу которых относится и web .

Очень важное преимущество PHP заключается в его «движке». «Движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью.

По некоторым оценкам, большинство PHP-сценариев (особенно не очень больших размеров) обрабатываются быстрее аналогичных им программ, написанных на Perl. Однако, чтобы не делали разработчики PHP, откомпилированные исполняемые файлы будут работать значительно быстрее – в десятки, а иногда и в сотни раз. Но производительность PHP вполне достаточна для создания вполне серьезных web-приложений.

Безопасность

РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.

1. Средства безопасности системного уровня

В РНР реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения РНР пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти (неконтролируемый расход памяти отрицательно влияет на быстродействие сервера). По аналогии с cgi-bin администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сценарии РНР для просмотра конфиденциальной информации на сервере (например, файла passwd).

2. Средства безопасности уровня приложения

В стандартный набор функций РНР входит ряд надежных механизмов шифрования. РНР также совместим с многими приложениями независимых фирм, что позволяет легко интегрировать его с защищенными технологиями электронной коммерции (e-commerce). Другое преимущество заключается в том, что исходный текст сценариев РНР нельзя просмотреть в браузере, поскольку сценарий компилируется до его отправки по запросу пользователя. Реализация РНР на стороне сервера предотвращает похищение нетривиальных сценариев пользователями, знаний которых хватает хотя бы для выполнения команды View Source.

Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами

Возможности PHP

Главным образом, область применения PHP сфокусирована на написание скриптов, работающих на стороне сервера. Таким образом, PHP способен выполнять всё то, что выполняет любая другая программа CGI. Например, обрабатывать данных форм, генерировать динамические страницы, отсылать и принимать cookies. Но PHP способен выполнять и множество других задач.

Существуют три основных области, где используется PHP.

  • Создание скриптов для выполнения на стороне сервера. PHP наиболее широко используется именно таким образом. Все, что вам понадобится, это парсер PHP (в виде программы CGI или серверного модуля), вебсервер и браузер. Чтобы Вы могли просматривать результаты выполнения PHP-скриптов в браузере, вам нужен работающий вебсервер и установленный PHP. За более подробными сведениями обратитесь к подразделу установка PHP.
  • Создание скриптов для выполнения в командной строке. Вы можете создать PHP-скрипт, способный запускаться вне зависимости от вебсервера и браузера. Все, что вам потребуется — парсер PHP. Такой способ использования PHP идеально подходит для скриптов, которые должны выполняться регулярно, например, с помощью cron (на платформах *nix или Linux) или с помощью планировщика задач (Task Scheduler) на платформах Windows. Эти скрипты также могут быть использованы в задачах простой обработки текстов. Дополнительная информация находится здесь.
  • Создание приложений GUI, выполняющихся на стороне клиента. Возможно, PHP является не самым лучшим языком для создания подобных приложений, но, если вы очень хорошо знаете PHP и хотели бы использовать некоторые его возможности в своих клиент-приложениях, вы можете использовать PHP-GTK для создания таких приложений. Подобным образом Вы можете создавать и кросс-платформенные приложения. PHP-GTK является расширением PHP и не поставляется вместе с дистрибутивом PHP. Если вы заинтересованы, посетите сайт PHP-GTK.

Парсер — это программный продукт, основной функцией которого является получение необходимых данных, соответствующих заданным параметрам.

Парсить — собирать и систематизировать информацию, размещенную на определенных сайтах, с помощью специальных программ, автоматизирующих процесс.

PHP доступен для большинства операционных систем, включая Linux, многие модификации Unix (такие, как HP-UX, Solaris и OpenBSD), Microsoft Windows, Mac OS X, RISC OS, и многих других. (Существует даже версия PHP для OS/2. Неизвестно, правда, насколько соответствующая нынешним реалиям). Также в PHP включена поддержка большинства современных вебсерверов, таких, как Apache, Microsoft Internet Information Server, Personal Web Server, серверов Netscape и iPlanet, сервера Oreilly Website Pro, Caudium, Xitami, OmniHTTPd и многих других. Для большинства серверов PHP поставляется в качестве модуля, для других, поддерживающих стандарт CGI, PHP может функционировать в качестве процессора CGI.

Таким образом, выбирая PHP, вы получаете свободу выбора операционной системы и вебсервера. Кроме того, у вас появляется выбор между использованием процедурного или объектно-ориентированного программирования или же их сочетания.

PHP способен не только выдавать HTML. Возможности PHP включают формирование изображений, файлов PDF и даже роликов Flash (с использованием libswf и Ming), создаваемых «на лету». PHP также способен выдавать любые текстовые данные, такие, как XHTML и другие XML-файлы. PHP способен осуществлять автоматическую генерацию таких файлов и сохранять их в файловой системе вашего сервера, вместо того, чтобы отдавать клиенту, организуя, таким образом, кеш динамического содержания, расположенный на стороне сервера.

Гибкость

Поскольку РНР является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере необходимости (впрочем, это относится ко всем основным языкам программирования).

Нет проблем и с зависимостью от браузеров, поскольку перед отправкой клиенту сценарии РНР полностью компилируются на стороне сервера. В сущности, сценарии РНР могут передаваться любым устройствам с браузерами, включая сотовые телефоны, электронные записные книжки, пейджеры и портативные компьютеры, не говоря уже о традиционных ПК. Программисты, занимающиеся вспомогательными утилитами, могут запускать РНР в режиме командной строки.

Также в PHP включена поддержка DBX для работы на абстрактном уровне.

Модуль DBX — это уровень абстракции базы данных (db ‘X’, где ‘X’ — это поддерживаемая база данных). Функции dbx позволяют получить доступ ко всем поддерживаемым базам данных, используя единые договоренности по синтаксису вызовов. Сами эти функции не взаимодействуют с базами данных, а предоставляют интерфейс к расширениям конкретных баз данных. Кроме того, PHP поддерживает ODBC (Open Database Connection standard), таким образом, вы можете работать с любой базой данных, поддерживающей этот всемирно признанный стандарт.

PHP также поддерживает «общение» с другими сервисами с использованием таких протоколов, как LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (на платформах Windows) и многих других. Кроме того, вы получаете возможность работать с сетевыми сокетами «напрямую». PHP поддерживает стандарт обмена сложными структурами данных WDDX. Обращая внимание на взаимодействие между различными языками, следует упомянуть о поддержке объектов Java и возможности их использования в качестве объектов PHP. Для доступа к удаленным объектам вы можете использовать расширение CORBA.

Socket (разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.

PHP включает средства обработки текстовой информации, начиная с регулярных выражений Perl или POSIX Extended и заканчивая парсером документов XML. Для парсинга XML используются стандарты SAX и DOM. Для преобразования документов XML вы можете использовать расширение XSLT.

Последним по порядку, но не по значению, является поддержка многих других расширений, таких, как функции поисковой машины mnoGoSearch, функции IRC Gateway, функции для работы со сжатыми файлами (gzip, bz2), функции календарных вычислений, функции перевода и многое другое.

PHP-разработчик

Программист PHP выполняет основную работу по созданию web-сайта.  Если провести аналогию со строительством, фактически он готовит фундамент, крышу, стены и все несущие конструкции, . Для полного выполнения заказа в команду привлекаются и другие профессионалы: веб-дизайнеры, seo-специалисты, контент-менеджеры, копирайтеры и др. Чем крупнее проект, тем большее количество сотрудников по разным направлениям требуется для его реализации. PHP-разработчики создают продукты для всех сегментов в сфере информационных технологий. Их заказчиками могут быть социальные сети, интернет-магазины, системы бронирования и дистанционного обучения, корпоративные ресурсы и многие другие.

Обязанности PHP-разработчика зависят от конкретного проекта и оговариваются в каждом случае с заказчиком. Однако можно выделить несколько основных задач:

  • — разработка и создание web-сайтов, web-приложений их модулей или страниц при помощи языка программирования, и их тестированиz;
  • — поддержка интернет-ресурсов, оптимизация работы сайтов (к примеру, увеличение производительности, повышение степени безопасности сайта и т.п);
  • — интеграция интернет-ресурсов с различными внутренними и внешними системами (к примеру, 1С);
  • — создание специализированной технической документации;
  • запуск и администрирование сайта;
  • исправление выявленных ошибок и недоработок;
  • также PHP-разработчики занимаются версткой, иногда – разработкой ТЗ, плюс senior PHP-разработчики могут и осуществлять руководство над младшими специалистами.

Через тернии к звёздам

Junior, middle и senior разработчики – градация, которую чаще всего используют на ИТ-рынке, но далеко не всегда понимают, как именно она строится.

Junior разработчик — вчерашний студент, стажер или сотрудник, с отсутствующей квалификацией по определенной технологии, с опытом решения некоммерческих задач и так называемых pet projects – небольших проектов, реализованных рамках обучения. Обычно берут в команду к более сильным коллегам, которые помогают им не только с постановкой задачи, но и с выбором инструментов для ее решения. Когда он попадает в команду, получает наставника, человек должен демонстрировать быструю обучаемость, не задавать два раза одни и те же вопросы и постараться максимум времени уделить обучению и задачам.

Достижение уровня Junior означает, что человек перестал отнимать существенное время у наставника и начал самостоятельно и качественно решать задачи в единицы дней. Маркером может быть то, что наставник начал принимать его работу с первого раза после ревью кода. На этапе джуна мелкие задачи – это чаще всего исправление некритичных ошибок, добавление и изменение элементов пользовательского интерфейса. В среднем через 1-1,5 года в меру способный junior developer уже готов к переходу в категорию «среднячков».

Middle разработчик — это уже опытный сотрудник, готовый к самостоятельной работе, с практическим опытом разработки. На продвинутом уровне свободно владеет технологиями ,знает несколько языков программирования/фреймворков, которые необходимы в работе. Он понимает процессы в команде, архитектуру продукта, продуктовый контекст и почему все так, а не иначе. И благодаря тому, что его знания систематизированы, такой специалист способен самостоятельно решать задачи , заниматься грамотными оптимизацией, рефакторингом и обзором кода (review), и даже может передавать свои знания junior-разработчикам.

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

Middle способен решать нетривиальные задачи, которые могут длиться от двух часов и до двух недель, способен проводить исследования и обосновывать свой выбор конкретного решения, способен рассуждать о его плюсах и минусах. В отличие от junior-а, middle уже может адекватно оценивать задачи по времени, и придерживаться намеченной оценки.

Грамотный выбор решения и то, какую стратегию нужно выбрать именно сейчас, именно в данный момент: сделать максимально качественно, но долго, либо чуть более небрежно, но быстро. Небрежность – это всегда плохо, но часто бывают ситуации, когда быстрая реализация приносит намного больше пользы. Конечно же, такие решения тоже нужно уметь обосновывать.

Middle – это человек, компетенции которого признала команда. Такой человек может справиться с добавлением новой бизнес-логики в существующий сервис, добавлением новых страниц интерфейса, добавлением новых функций API. В среднем путь от Junior до Middle занимает от 1 до 3 лет.

Senior разработчик – это достаточно уверенный и опытный специалист, прошедший боевое крещение реальными проектами, переживший не один дедлайн и в одиночку успешно выбравшийся из-под обломков неожиданно рухнувшей системы.

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

Кроме того, это уже однозначные эксперты в определенной области, которые высоко ценятся на рынке труда. Благодаря этому ему доверяет команда – и он способен довольно легко организовать процесс взаимодействия ее участников. Такими матерыми бойцами ИТ-фронта становятся, за редким исключением, минимум года через 3 после начала карьеры.

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

Оцените автора
( Пока оценок нет )
Digital 2 - Цифровая реальность
Добавить комментарий