Год появления языка программирования php. Язык PHP для чайников: история появления, ключевые особенности

Последнее обновление: 20.10.2017

На сегодняшний день PHP является наиболее распространенным языком веб-программирования. Подавляющие большинство сайтов и веб-сервисов в интернете написано с помощью PHP. По некоторым оценкам PHP применяется более чем на 80% сайтов, среди которых такие сервисы, как facebook.com, vk.com, baidu.com и другие. И такая популярность неудивительна. Простота языка позволяет быстро и легко создавать сайты и порталы различной сложности.

PHP был создан в 1994 году датским программистом Расмусом Лердорфом и изначально представлял собой набор скриптов на другом языке Perl. Позже этот набор скриптов был переписан в интерпретатор на языке Си. И с самого возникновения PHP (сокращение от PHP: Hypertext Preprocessor - PHP: Препроцессор гипертекста) представлял удобный набор инструментов для упрощенного создания веб-сайтов и веб-приложений.

Какие преимущества предоставляет PHP?

    Для всех наиболее распространенных операционных системам (Windows, MacOS, Linux) есть свои версии пакетов разработки на PHP, а это значит, что вы можете создавать веб-сайты на любой из этих операционных систем.

    PHP может работать в связке с различными веб-серверами: Apache, Nginx, IIS

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

    PHP похож на язык Си, поэтому, зная Си или один из языков с сиподобным синтаксисом, будет проще овладеть PHP

    PHP поддерживает работу с множеством систем баз данных (MySQL, MSSQL, Oracle, Postgre, MongoDB и другие)

    Распространенность хостинговых услуг и их дешевизна. Так как, как правило, хостинговые компании размещают веб-сайты на PHP на веб-серверах Apache или Nginx, которые работают на одной из операционных систем семейства Linux. И веб-серверы, и операционные системы на базе Linux бесплатны, что снижает общую стоимость использования хостинга

    Постоянное развитие. PHP продолжает развиваться, выходят все новые версии, которые несут новые функции, адаптируя язык программирования к новым вызовам. И, как правило, перейти на новую версию не составляет труда.

    К настоящему моменту (октябрь 2017) текущей стабильной версией PHP является PHP 7.1.

А теперь создадим первый маленький сайт на PHP. Но перед его созданием нам надо загрузить и установить все необходимые инструменты для разработки сайтов.

© Андрей Кухарчик
Компьютерная газета

Введение

Интернет уже давно прочно вошел в нашу жизнь. Это смелое утверждение можно доказывать или опровергать много раз, но так или иначе все меняется, а с этим спорить никто не будет.

Прошли те времена, когда многие пользователи персональных компьютеров в целях экономии дискового пространства удаляли программу "Интернет Эксплорер" из всеми нами обожаемой операционной системы, так как просто не нуждались в ней. Теперь даже те, у кого нет доступа к Паутине, стараются не трогать эту программу, так как форматы сети Интернет давно уже перешли в другие сферы нашей компьютерной жизни. А уж если в компьютере поселился модем, избежать наличия браузера просто невозможно, так как очень хочется хоть одним глазком посмотреть, а что же там, за гранью телефонной линии? И когда знакомство состоялось, отказаться от преимуществ сети уже не так-то просто. Через некоторое время начинаешь осознавать, что надо как-то вложить себя и свои идеи и проявиться на бескрайних просторах Глобальной сети. Сделать свою страничку стало даже престижно, и пусть в ней мало полезного, а счетчик фиксирует только Ваши не частые посещения, сделанное может стать началом серьезного проекта и изменить всю Вашу жизнь.

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

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

История РНР

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

По словам автора, РНР был написан буквально за день в промежутках между деловыми встречами. Сначала это была просто невзрачная CGI-оболочка, написанная на языке Perl, и служила она исключительно для специфических целей. Для справки - СGI (Common Gateway Interface) - общий шлюзовой интерфейс, является стандартом, который предназначен для создания серверных приложений HTTP.

Такое приложение, которое называют шлюзом или CGI-программой, запускается сервером в реальном режиме времени. Сервер передает запросы пользователя CGI-программе, которая их обрабатывает и возвращает результат своей работы на экран пользователя.

Таким образом, посетитель получает динамическую информацию, которая может изменяться в результате влияния различных факторов. Сам шлюз (скрипт CGI) может быть написан на различных языках программирования - C/C++, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script и других подобных языках. Но в случае с РНР, для написания его в первоначальном варианте был выбран язык Perl, как наиболее простой и доступный.

В результате дальнейшей эксплуатации выяснилось, что оболочка обладает маленькой производительностью, и автор вынужден был переписать все заново, но уже на языке С, что позволило увеличить скорость работы РНР. Пользователи сервера, где располагался сайт с первой версией РНР, попросили себе такой же инструмент, и хоть автор не предполагал, что кто-то другой будет пользоваться этим языком, довольно быстро РНР перерос в самостоятельный проект, и в начале 1995 года вышла первая известная нам версия продукта. Имя этого первого пакета было Personal Home Page Tools (средства для персональной домашней страницы). На тот момент РНР обладал более чем скромными возможностями. Он имел простейший анализатор кода, который понимал несколько специальных команд, а также разные утилиты для использования на домашней странице, необходимые для построения таких полезных вещей, как гостевая книга, счетчик, чат, системы статистики и тому подобное. К середине 1995 года язык был основательно переработан, появилась обработка форм, были добавлены функции работы с базами данных, и в таком виде вышла вторая версия продукта.

Сегодня РНР - это мощный кроссплатформенный набор средств, который располагается на сервере и предназначен для обработки специального кода, встраиваемого в HTML-страницу. Благодаря этому, появляется возможность легко создавать динамические сайты. Файлы, созданные таким образом, хранятся и обрабатываются на сервере, и когда посетитель запрашивает документ с РНР, скрипт обрабатывается не браузером посетителя, как, например, Java Script, а сервером, и посетителю передаются уже только результаты работы. Точно так же работает CGI-программа, написанная на С или Perl. Но, в отличие от CGI, код РНР можно встраивать в любое место HTML-странички, что является основным преимуществом по отношению к CGI. А кроме того, сам язык РНР очень прост для изучения и не требует каких-либо специфических знаний. Например, лично мне вполне хватило опыта, приобретенного лет десять назад на уроках информатики в школе, где мы изучали язык Бейсик на очень модных и дорогих тогда Ямахах. Несмотря на столь радужную характеристику, есть у РНР и недостатки. Стоит отметить довольно медленную (по сравнению с программами на CGI) работу скриптов РНР, а также сложность написания больших и сложных программ. Так или иначе, РНР остается интерпретируемым языком, что непременно ведет к ухудшению производительности в случае очень больших и сложных программ, но, для выполнения несложных манипуляций на сайте, РНР - лучший выбор. Недаром к середине 2000 года РНР использовался более чем на 2,5 миллионах сайтов!

Особенности РНР

Как и у всякого языка программирования, у РНР есть свой синтаксис. Он очень похож на синтаксис языка С или Perl. Программисты, пишущие на этих языках, смогут освоить РНР буквально за несколько дней. Но даже если Вы никогда не программировали, РНР поддастся Вам легко и обеспечит базу для перехода на языки более сложного уровня. Все команды достаточно логичны, а правила просты. Синтаксис включает в себя операторы, разделенные между собой точкой с запятой. Одна из основных ошибок начинающих программистов - отсутствие точки с запятой между операторами. К счастью, ошибки в РНР по умолчанию выдаются на экран (в отличие от CGI, где все ошибки записываются в лог-файл), и найти их при определенной внимательности и опыте не составит большого труда. Тем более что умный интерпретатор подскажет номер строки, в которой произошла ошибка.

Для программирования на РНР Вам понадобится любой текстовый редактор, но для удобства он должен обеспечивать подсветку синтаксиса и нумерацию строк. Я использую CuteHTML, входящий в комплект поставки неплохого FTP-менеджера CuteFTP последних версий. Редактор очень удобный, без лишних ненужных функций, сам встраивается в контекстное меню, не требует инсталляции и имеет все необходимое для программирования. Еще нам понадобится комплект для работы с РНР. Как правило, используется Apache+PHP, хотя это и не обязательно, подходит любой сервер, например IIS Microsoft. Но первый вариант бесплатен и имеет большую поддержку документацией (в том числе на русском языке) и форумами, где можно выяснить любой вопрос.

Теперь давайте перейдем к делу - напишем наш первый скрипт. Для того чтобы сервер знал, в каком из файлов есть код РНР, его расширение (файла) нужно сделать либо phtml, либо php3, либо php. Строго говоря, может быть назначено любое расширение, но я рекомендую Вам в целях совместимости всегда использовать phtml. Каждая команда в РНР как правило начинается с "" (здесь и далее без кавычек). Как Вы помните, несколько команд разделяются точкой с запятой. В любом месте скрипта РНР можно поставить комментарий, начинается он с "/*", а заканчивается - "*/" Если комментарий маленький и занимает только одну строчку, можно поставить "//" и таким образом легко закомментировать любую строчку до ее конца. Как обычно, пробелы, символы табуляции и перевод строки просто игнорируются и могут применяться для улучшения читабельности кода РНР.

Вывод на экран и переменные в РНР

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

Этот скрипт может быть расположен в любом месте HTML-документа, и сам по себе он не несет ничего полезного, так как только выводит на экран фразу "Привет, мир!". Но таким образом мы знакомимся с одной из наиболее распространенных команд РНР - вывод информации на экран пользователя. Для того чтобы придать нашему скрипту полезные функции, давайте познакомимся с переменными. Переменная характеризуется именем, типом и значением. Имя может быть любым и включать в себя цифры, буквы английского алфавита и разрешенные символы (например, символ подчеркивания или тире). По типу переменные делятся на целые, с плавающей запятой и символьные. Значение в соответствии с типом может быть практически любым. Например, переменная a=5. Это говорит нам о том, что имя у переменной - а, тип - целочисленный, значение - 5. Вот еще примеры имен и значений:

Как видите, все переменные в РНР (но не только в нем) должны начинаться с символа $, что позволяет интерпретатору безошибочно отличать их от команд РНР. В первой строчке нашего скрипта переменной $name присваивается значение 6, и эта переменная автоматически становится целочисленной. Кстати говоря, заранее описывать тип переменной не требуется, как в языках Pascal или Visual Basic, но хотя разделение на типы чисто условное, каждая переменная автоматически стремится использовать правильный тип, соответственно значению. Вторая строчка кода присваивает переменной $h12 значение 4.89, которое является значением с плавающей запятой. Третья и четвертая строчки кода присваивают своим переменным значения, являющиеся символьными строками. Все, что заключено в кавычки (включая цифры), будет интерпретировано как символьная строка. Если переменные не определены ранее, но используются, их значение принимается равным либо нулю, либо пустой строке в зависимости от типа.

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

Результат работы скрипта - вывод на экран цифры 4. Поддерживаются все арифметические операции и функции, многоуровневые скобки, логические операции, операции увеличения или уменьшения на единицу и многое другое. Кроме того, очень просто и естественно организуется сравнение если - то - иначе. Для этого в РНР применяется конструкция if () { } else { }. Есть различные варианты синтаксиса этого оператора, но этот - основной, и самый логичный из всех. (если) if (условие) (то) { выполняется то, что заключено в кавычки } (иначе) else { выполняется то, что заключено в кавычки }. После кавычек ставить точку с запятой, как обычно между операторами, не обязательно. Но внутри кавычек - разделение операторов между собой проводится только через точку с запятой. Допускается вложение нескольких операторов проверки один в один. В этом случае надо быть очень внимательным к количеству закрывающих кавычек, так как при отсутствии даже одной интерпретатор выдаст ошибку кода. Рассмотрим несложный пример:

При сравнении на истину применяется два знака равенства для того, чтобы интерпретатор мог без труда отличить сравнение от присваивания. Результат работы скрипта - 95, т.к $a не равно $b, а команда echo $b.$a; (между переменными стоит точка, а не знак арифметической операции) выводит подряд указанные переменные. Неравенство (ложь) обозначается символами!=, допустимы все остальные арифметические и логические символы и операторы (например, or, and, >, <= и т.д.).

В РНР есть средства быстрого изменения переменной на единицу в сторону увеличения или уменьшения. Для этого нужно указать имя переменной и за ним, без знака равенства, - подряд два плюса или минуса соответственно. Например, $a++; - переменная $a будет увеличена на единицу. Поддерживается одновременное присваивание одного значения нескольким переменным - $a = $b = 4;. Обе переменных будут равны четырем. Вот еще несколько примеров нестандартых арифметических операций в РНР:

Вложения файлов в РНР

Каждый, кто сделал хоть одну страничку в сети, сталкивался с проблемой изменения тех или иных данных на ней. Конечно, это не сложно когда страничек несколько или она одна:-), но если Вы сделали большой сайт, маленькое дополнение (например, в меню) в сотни файлов может превратиться в настоящий кошмар! РНР решает эту проблему в раз, позволяя вкладывать одну страницу в другую. Достигается это с помощью операторов REQUIRE и INCLUDE. После этих операторов в круглых скобках должен стоять путь к вкладываемому файлу. Например, INCLUDE ("text.phtml"). Различие между указанными операторами заключается в том, что REQUIRE подменяется содержимым указанного файла и может быть использован только один раз, а INCLUDE - вставляет и выполняет содержимое указанного файла, что позволяет применить его несколько раз, например в цикле. В любом случае, при исполнении файла интерпретатор РНР (правильно говорить - парсер) пребывает в состоянии HTML, и для его включения код надо заключить в конструкцию . Вложения файлов могут происходить только внутри серверного пространства, доступного РНР. Другими словами, Вы не можете использовать в имени файла http://

Достаточно часто встречаются сайты, ссылки которых включают в себя специальные символы - &, ?, %. Все это может быть и результатом работы РНР. Дело в том, что если в конце ссылки добавить?имя=значение, это значение будет доступно под этим же именем в файле, куда указывает ссылка. Если необходимо добавить несколько имен, они могут быть разделены знаком &. Теперь мы можем сделать сайт, который будет доступен с помощью только одной странички. А всю остальную информацию эта страничка будет выводить на основании полученных по ссылке данных. Вид такой ссылки будет примерно таким: http://имя.ru/index.phtml?link=1. Единица в конце ссылки и есть наш параметр, который будет подставляться в файле index.phtml. Например, вот так:

…начало файла … … конец файла …

Обратите внимание, написанный нами код учитывает ситуацию, когда посетитель по разным причинам указал неправильный параметр. В этом случае выводится заранее заготовленная страничка с сообщением об ошибке. Если же параметр соответствует какому-либо из файлов сайта, он в код файла index.phtml вкладывается и исполняется. Таким образом, начало и конец остаются одинаковыми, а изменяется только середина. И какие-либо изменения уже не кажутся такими страшными, как раньше. Ведь сделать их надо только в одном файле, а отразится это на всем сайте.

Есть и другой путь. Его суть заключается в том, что у РНР есть доступ к так называемым переменным окружения сервера. Одна из этих переменных - запрашиваемый посетителем путь относительно адреса сайта. И этот путь становится нам доступен для использования. В этом случае ссылки у нас будут такого вида: http://имя.ru/index.phtml?patch/name.phtml. Вторая часть ссылки - patch/name.phtml - будет нам доступна, если мы считаем параметр $QUERY_STRING. Например, так: $add = $QUERY_STRING. Теперь изменим наш головной файл index.phtml, чтобы все работало автоматически. А если запрашиваемый параметр не будет указан (правильно говоря - будет равен пустой строке), чтобы что-то открыть, присвоим переменной $add имя файла, который должен быть открыт как главная страничка. Пусть это будет файл main.phtml. Тогда код будет выглядеть следующим образом:

…начало файла … … конец файла …

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

Пример счетчика посещений на РНР

Если Вы все внимательно прочитали, Вы без труда получите стартовый капитал знаний, и он даст Вам возможность самостоятельно в дальнейшем изучать язык РНР. И в конце я предлагаю Вам познакомиться с кодом скрипта, который позволит организовать на любой из страниц Вашего сайта счетчик посещений. Этот счетчик не будет полнофункциональным, так как имеет достаточно много недостатков, но как пример применения РНР вполне годится. В любом месте Вашей странички (но только там, где это нужно) вставьте следующий код:

Посетителей странички -

В том же каталоге, что и Ваша страничка, создайте файл counter.dat, закачайте его на сервер и с помощью своего FTP-менеджера измените атрибуты этого файла таким образом, чтобы он был доступен для записи. Обычно нужно установить галочки на всех атрибутах файла. Если Вы этого не сделаете, скрипт будет постоянно выдавать ошибку при попытке записи в файл. Кстати, для того чтобы этого не происходило, стоит поставить перед командой записи и открытия файла символ @, он отменит вывод сообщения о возникшей ошибке на экран посетителя. Когда атрибуты изменены, обновите Вашу страницу на сервере и обратитесь к ней по ее адресу в браузере. Вы увидите, что там, где Вы вставили код РНР, появляется строка: "Посетителей странички - " и далее число, соответствующее количеству посещений. И никакого следа кода! Он был обработан на сервере в Интернете, а браузеру просто передан результат этого исполнения.

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

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

Там же выложены все предыдущие выпуски рассылки. А по адресу Вы сможете посмотреть, как все это работает в действии. Все, что Вы встретите на этом сайте, - сделано на РНР. Чат, форум, частные объявления, система статистики - это только малая часть тех возможностей, что дает нам программирование на языке РНР.

Язык программирования PHP

РНР изобретен Расмусом Лердорфом в конце 1994 года. Первая версия выпущена в 1995 году под именем «Инструментарий Персональных Домашних Страниц», затем она была переработана и названа PHP/FI Version 2 (FI -- модуль обработки данных для форм). Также была добавлена поддержка баз данных mSQL. С этого момента в разработке стали принимать участие добровольцы.

Статистика используемости РНР приблизительна, но, согласно исследованию, проведенному Netcraft, в начале 2001 года РНР использовался на более чем 5 300 000 сайтах по всему миру. Для сравнения: в это время число IIS серверов было примерно таким же (5 млн). Разработка интерпретатора РНР приняла форму организованного командного процесса, ядро интерпретатора разрабатывает компания Zend.com. При этом РНР распространяется свободно: его последнюю версию можно загрузить с сайта PHP.net. Модули РНР поставляются в комплекте с сервером Apache, в комплектах систем Linux.

Изначально аббревиатура РНР означала Preprocessor of Home Pages -- препроцессор домашних страниц. Это язык внедряемых в HTML-страницы сценариев, исполняемых на сервере. По большей части его синтаксис заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса возможностей, которых этим языкам недостает. Проще говоря, синтаксис РНР -- это разумная альтернатива и строгости С, и «беспредельности» Perl.

РНР наделен практически полным набором функциональности, о которой (до появления РНР) мог только мечтать web-программист. Его цель -- позволить максимально быстро создавать динамически генерируемые web-страницы. С полным основанием можно заявить, что изучение и использование РНР будет выгодно как начинающим, так и профессиональным программистам.

Сравнение языка программирования РНР с другими языками программирования Web-приложений

Для ответа обоснования выбора средств программирования было произведено сравнение РНР с другими языками программирования Web-приложений. Основными конкурентами РНР являются технологии JSP (Java Server Pages и Java Scriptlets), ASP.NET (Active Server Pages), Perl, Cold Fusion Server Pages.

1. Языки программирования РНР и Perl

Язык Perl был создан программистом Ларри Уоллом (Larry Wall) и расшифровывается как Practical Extraction and Report Language. Перевести это можно как "язык для практического извлечения данных и составления отчетов". Perl является интерпретатором и появился намного раньше, чем Web. С появлением интернета язык Perl оказался удобным инструментом для создания динамических Web-страниц. Большое распространение Perl получил потому, что был доступен на каждом Web-сервере, поскольку практически все они работали под управлением UNIX, и альтернативой ему являлся лишь более сложный язык С. Perl проигрывает РНР в изяществе, притом, что РНР предлагает функциональность, аналогичную Perl при значительно меньшей избыточности и сравнительной простоте синтаксиса. Избыточность языка Perl связана с тем, что он разрабатывался для самых разнообразных приложений, что не могло не сказаться на его синтаксисе, в то время как РНР изначально разрабатывался для Интернета. По мнению очень многих пользователей, не знавших изначально ни РНР, ни Perl, выучить РНР намного проще.

2. Языки программирования РНР и Java

Вообще говоря, различают язык Java и технологию Java. Язык Java представляет собой С-подобный язык, который разрабатывался как "улучшенный C++". Технология Java включает в себя клиентскую и серверную часть, а также доступ к базам данных, поэтому наиболее корректно проводить сравнение технологии Java со связкой Apache/PHP/MySQL. Технология Java разрабатывалась как межплатформенная технология, позволяющая создавать Web-приложения корпоративного масштаба. Основными достоинствами этой технологии являются межплатформенная переносимость и объектно-ориентированный язык, что позволяет создавать сложные и объемные приложения. К числу недостатков можно отнести медленное выполнение, потребление большого количества памяти (плата за межплатформенную переносимость) и сложность разработки Web-приложений по сравнению с РНР. Между тем РНР почти не уступает Java в гибкости и масштабируемости созданных приложений. Кроме того, использование Java для разработки достаточно простых приложений вряд ли оправдано, а при работе над серьезными задачами Java обходится дороже.

3. Языки программирования РНР и ASP.NET

ASP (Active Server Pages) -- язык сценариев от Microsoft. Если язык ASP значительно уступал РНР по многим параметрам, в первую очередь, по времени выполнения сценариев, то с появлением технологии ASP.NET ситуация изменилась. Основное достоинство ASP.NET заключается в возможности применения всей мощи интерфейса Windows для разработки Web-приложений. Это позволяет разрабатывать страницы со сложным интерфейсом, не заботясь о сохранении, шифровании и передаче переменных, используемых на динамических страницах. ASP.NET тесно интегрирован в новую технологию NET компании Microsoft. Главной особенностью разработки Web-приложений при помощи ASP.NET является возможность использовать любой язык программирования среды исполнения NET. Это может быть как модифицированный вариант Visual Basic -- Visual Basic.NET, так и новый язык С# или клон Java -- J#. Более того, в рамках одного Web-приложения могут быть использованы несколько языков программирования. Все это позволяет объединять в рамках одного проекта программистов, владеющих разными языками программирования. Код Web-приложения на ASP.NET компилируется в промежуточный язык MSIL (Microsoft Intermediate Language), иногда просто называемый IL. Аппаратно-независимый код на языке IL помещается в кэш Web-сервера для повышения производительности, по аналогии с байт-кодом Java. Но в отличие от технологии Java, обеспечивающей платформенную независимость, NET обеспечивает независимость от языка разработки. Выполнение Web-приложений ASP.NET на серверах, работающих не под Windows, практически невозможно. Более того, если Web-приложение интенсивно использует компоненты NET, просмотр динамической страницы будет возможен только под Windows и только с помощью браузера Internet Explorer. Поэтому в смысле переносимости РНР, безусловно, отличается от ASP.NET в лучшую сторону. Другой крайне немаловажный довод в пользу РНР заключается в быстром исправлении обнаруженных ошибок. Теоретически исправить их можно самостоятельно, если обладаете достаточной квалификацией. Также можно написать письмо разработчикам, и с большой долей вероятности, в следующей версии ошибка будет исправлена. А версии РНР выходят очень часто. Еще одним плюсом РНР, особенно важным для начинающих, является то, что его легче использовать для построения Web-приложений. Таким образом, при выборе между ASP.NET и РНР следует исходить из стоящей задачи. Если в сети Интранет крупной корпорации большинство серверов и клиентских машин работают под управлением Windows, применение ASP.NET более чем оправдано. В то же время для разработки Web-сайта, размещаемого в Интернете, целесообразнее использовать РНР.

4. Языки программирования РНР и ColdFusion

Пакет ColdFusion разработан фирмой Allaire и предназначен для быстрой разработки как интерактивных, так и динамических Web-документов путем обработки информации, полученной из базы данных. Минусом ColdFusion является достаточно низкая переносимость. РНР работает практически на всех платформах, a ColdFusion -- только на четырех: Win32, Solaris, HP/UX и Linux. Кроме того, ColdFusion, так же как и ASP, является коммерческой разработкой. ColdFusion достаточно мало распространен. По сравнению с РНР он более требователен к ресурсам. Плюсом ColdFusion является хорошая интегрированная среда разработки и, как следствие, более простые, чем в РНР языковые конструкции и более быстрое написание кода. Правда, из-за такой высокоуровневости языка некоторые задачи на нем решаются сложнее.

5. Языки программирования PHP 4.0 и PHP 5.0

Основные отличия заключаются в реализации объектно-ориентированной модели. РНР 4.0 работал на движке Zend Engine 1.0. К выходу РНР 5.0 фирма Zend полностью переписала движок и выпустила в свет Zend Engine 2.0, который, по словам создателей, реализует "новую объектную модель". По сравнению с РНР 4.0, в пятой версии языка появились следующие особенности:

1. Введены закрытые (private) и открытые (protected) члены и методы класса, а также абстрактные классы и методы.

2. Введены интерфейсы, при этом класс может реализовывать произвольный список интерфейсов.

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

4. Введены постоянные члены и методы класса.

5. Одним из важнейших нововведений является наличие деструкторов.

6. Хорошей новостью является введение в РНР 5.0 статических членов класса. В РНР 4.0, если возникала необходимость в использовании статических членов, приходилось пользоваться искусственным приемом, заключающемся в комбинации глобальных переменных со статическими методами. При этом получались классы, которые действовали так же, как статические. Прием этот, мягко говоря, не очень хороший, поскольку вызывал проблемы, связанные с использованием глобальных переменных. Теперь в РНР 5.0 статические методы можно объявлять явно при помощи ключевого слова static.

7. В РНР 5.0 введен механизм обработки исключений, отсутствующий в РНР 4.0. Таким образом, в результате подобных нововведений в объектную модель РНР 5.0 стал полностью профессиональным языком программирования, что позволяет использовать его для решения задач любой степени сложности.

Язык PHP уверенно чувствует себя в топах самых популярных языков программирования, однако же у всего есть конец. Грозит ли PHP оказаться не у дел, что может его заменить и какой язык вы бы выбрали для создания сайта типа Facebook? На эти вопросы ответили пользователи сайта Quora .

Джордж Мауэр, преподает JS

PHP умирает, Java умирает, C# умирает, SQL умирает, JavaScript умирает, C умирает. И все равно проектов на этих языках значительно больше, чем проектов на всех неперечисленных языках программирования вместе взятых. Да, иногда новые тренды могут вытеснять что-то устоявшееся, но этот процесс происходит крайне медленно. Совсем не значит, что это самое старое - плохое.

Я не могу согласиться с тем, что PHP был лучшим вариантом для создания Facebook. Создатели этой социальной сети в действительности лишь частично используют PHP. В настоящее время можно сказать, что вместо этого языка у них есть собственный диалект под названием Hack. PHP был просто языком, на котором Цукерберг и другие разработчики начинали работать над этим проектом.

Нельзя сказать, что PHP был таким уж и плохим выбором. Все же это язык, который отвечает требованиям быстрой разработки приложений. А это в свою очередь является одним из ключевых факторов для стартапа - в случае с Facebook этот фактор сыграл решающую роль. Изначально PHP был этакой сборной коллекцией скриптов. И это позволяет легко перейти на более низкий уровень абстракции и создавать код на C тогда, когда действительно существует необходимость в оптимизации. Все это было тщательно изучено и успешно внедрено в большинство современных языков.

Пожалуйста, выкиньте из своей головы идею, что социальная сеть требует чего-то специфического от языка программирования. Создание большей части кода будет совершенно стандартным и привычным. Да, есть некоторые проблемные области наподобие сопоставления предположительных и потенциальных друзей, но похожие вопросы чаще всего решаются при помощи специализированного ПО. Например, графо-ориентированных баз данных. Вам нужно будет крайне тщательно и аккуратно строить свою систему, а также отлично разбираться в области DevOps, но то же самое придется проделывать и с другими языками. Вместо идеального языка разработки для вас скорее важны опытные и знающие разработчики.

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

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

На данный момент таким языком является Elixir. Он базируется на виртуальной машине Beam и является достаточно близким родственником языка Erlang, который на протяжении нескольких десятилетий отлично демонстрировал себя в ряде проектов. Кроме того, данный язык показывает просто невообразимые результаты в отношении производительности.

Другим отличным выбором может стать язык Go. Главным образом это язык низкого уровня, но на нем можно делать все то же, что и на языках высокого уровня. Пусть мне и не нравятся некоторые решения касательно его структуры, но он, так или иначе, заслуживает внимания.

Еще одним вариантом может стать Clojure. Существует вероятность, что найти разработчиков на данном языке будет не так просто, но с учетом того, что этот язык - прямой потомок LISP, я могу искренне назвать его невероятно мощным и дающим множество вариантов развития.

Несколько важных замечаний:

  • присмотритесь к F# на фреймворке.Net или даже к вездесущему C#. Если вы все же выберете последний вариант, то будьте готовы к тому, что для создания отличной команды вам придется просмотреть и просеять намного большее количество резюме;
  • при помощи Scala можно творить впечатляющие вещи;
  • Node.js. Я просто обязан упомянуть Node.js. Лично я считаю, что на данный момент на вершине цепочки стоит Javascript, но Node уже долгое время также входит в список достаточно широко используемых языков. Кроме того, есть большое количество высококвалифицированных специалистов.

PHP (Hypertext PreProcessor ) – один из самых популярных инструментов веб-программирования на стороне сервера. Работа PHP в самом простом варианте сводится к обработке http запроса клиента. Обработка запроса, в свою очередь, заключается в программном формировании гипертекста в соответствии с параметрами запроса, после чего полученная разметка возвращается клиенту. Когда клиент (интернет браузер) запрашивает обычную статическую интернет страницу (чаще всего с расширением html), сервер в качестве ответа возвращает ему содержимое этой страницу без изменений “как есть”. Если запрашивается php страница, то в процессе обработки запроса содержимое указанной страницы сначала обрабатывается интерпретатором PHP, и только потом результат этой обработки отправляется клиенту.

Другими словами, PHP – это препроцессор гипертекста , что и отражено в его названии. Пре процессор потому что окончательной обработке гипертекст подвергается уже на стороне клиента, результат которой мы видим в окне браузера (процессором гипертекста является уже сам браузер). Можно сказать, что PHP – это генератор гипертекста, поскольку в большинстве случаев его работа – это программная генерация по содержимому базы данных или по любой другой структурированной информации, размещенной на сервере. Аббревиатура выглядит, как PHP, а не как, к примеру, HPP или иначе, поскольку первоначально расшифровывалась как Personal Home Page Tools – инструментарий для создания персональных интернет страниц. Таким образом, первый вариант расшифровки PHP отражал его назначение, а нынешний – принцип работы.

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

  • обработка и извлечение параметров http запросов GET и POST;
  • формирование и отправка http заголовков ;
  • инфраструктура для хранения данных сеанса ;
  • программные сервисы для работы с cookies ;

    cookies - текстовые данные, сохраняемые браузером на компьютере клиента, которые чаще всего содержат параметры доступа (логин и пароль) или персональные настройки пользователя. Cookies формируются браузером и автоматически, в ходе каждого удаленного обращения пересылаются серверу в заголовках http запроса.


  • работа с файлами по FTP протоколу ;
  • работа с базами данных посредствам ;
  • поддержка
  • поддержка HTTP авторизации ;
  • обмен сообщениями по электронной почте и многое другое.

В этом разделе я планирую кратко рассматривать ключевые моменты применения PHP для создания несложных веб-приложений. Материалы будут организованы в несколько разделов, по каждому из которых будут приведены примеры с их исходным кодом. Для самостоятельных экспериментов необходим или любой другой сайт, к которому у вас имеется полный доступ, и на сервере которого установлен PHP.

Основы программирования на PHP

Добавление в разметку кода PHP и результат работы препроцессора гипертекста

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

код программы ?>

В ходе работы PHP интерпретатора секции заменяются на разметку, формируемую в результате работы размещенного в них программного кода. Для вывода результата работы препроцессора используется оператор echo , аргументами которого могут быть константы, переменные, функции или различного рода выражения, а результатом – текст. Самый простой вариант может выглядеть следующим образом:

"; ?>

Если вы откроете исходный код полученной страницы в браузере, то никакого PHP там уже не будет (если, конечно, на сервере установлен интерпретатор PHP). Смысла в таком использовании оператора echo не особо много. Вся прелесть PHP в том, что формируемый HTML может зависеть от параметров запроса, содержимого базы данных, политики безопасности и многого другого. Анализ и обработка всего этого выполняется с использованием знакомых практически всем , таких как циклы, условия, функции и т.п. Забегая вперед, приведу небольшой пример программы на PHP c использованием цикла и условного оператора, с тем, чтобы начальное представление о препроцессоре гипертекста стало более полным. Следующая программа выводит значения факториала чисел от 1 до 9.

Пример программы на PHP данная разметка сформирована программно интерпретатором PHP."; $f=1; for ($i=1; $i<10; $i++) { if ($i>1) $f=$f*$i; echo $i,"!=",$f,"
"; } ?>

Результат ее работы будет выглядеть в браузере примерно следующим образом:

1!=1 2!=2 3!=6 4!=24 5!=120 6!=720 7!=5040 8!=40320 9!=362880

Организация приложения из нескольких файлов PHP

Краткий условный или тернарный оператор

Ниже приведен общий вид условного оператора присваивания с использованием тернарного оператора:
$результат = условие? выражение если true: выражение если false;

Пример:
$result = ($a>5) ? $a+$b: $a-$b;

Если a больше 5 , то переменной result присваивается значение a+b , иначе a-b .

Альтернатива оператора if с большим количеством конструкций elseif . Выполнение операторов начинается с той секции case , со значением которой совпадет значение выражения и продолжается по всем последующим case , пока не встретится команда break - завершить выполнение. Секция default – альтернатива секции else в условном операторе.

Switch (выражение ) { case значение 1 : оператор 1 ; case значение 2 : оператор 2 ; case значение 3 : оператор 3 ; default: оператор, выполняемый “по-умолчанию” ; } do тело цикла ; while (условие );

Пример тот же:

$i=2; $f=1; do { $f=$f*$i; $i++; echo $i,"!=",$f,"
"; } while ($i<10);

Более подробно про цикл do ... while читаем .

Перебор элементов в массиве или оператор foreach

Про массивы еще будет сказано несколько слов отдельно, а ниже конструкция для перебора его элементов в цикле:

Foreach (массив as $элемент ) выражение, где что-то делаем с переменной $элемент ;

$values = array("for", "while", "do", "foreach"); echo "Циклы в php:","
"; foreach ($values as $operator) echo $operator, "
";

Циклы и оператор выбора в PHP, также, как и во многих других языках программирования поддерживают инструкции break – досрочного завершения цикла и continue – досрочного завершения текущей итерации цикла (переход к началу цикла). Более подробно про них читайте .



Поделиться