«накомство с PHP.

—мотрите биографию ћоносова јндре€ у нас.

«накомство с PHP 2002-07-04
јвтор: јлександр √рималовский —траницы: [1]

¬ведение в изучение €зыка php

«дравствуйте! — сегодн€шнего дн€ мы начинаем серию публикаций о программировании на PHP. ¬ этой статье мы дадим краткую вводную и посв€тим вас в планы на будущее. ѕоскольку в интернете уже существует достаточное количество сайтов о PHP, публикующих материалы, рассчитанные на новичков, мы прин€ли решение в основном ориентироватьс€ на людей, уже несколько разбирающихс€ в PHP-программировании. Ёто необходимо дл€ того, чтобы понимать примеры кода, которые будут приводитьс€ в дальнейшем.

“ем не менее, несмотр€ на предполагаемую подготовленность читател€, в первой статье мы дадим краткий обзор по PHP вообще - что он из себ€ представл€ет, какие задачи с его помощью следует решать, некоторые особенности синтаксиса, и т.п.

„то такое PHP?

PHP (его полное название: PHP: Hypertext Preprocessor) - это €зык, предназначенный дл€ быстрого создани€ динамических web-страниц. —интаксис €зыка похож на , Java и Perl, однако имеет и свои, присущие только ему особенности. ¬ официальной документации PHP определ€етс€ как server-side HTML-embedded scripting language (встраиваемый в HTML скриптовый €зык с обработкой на сервере). »з этого определени€ можно выделить два основных момента:

  1. ќбработка кода PHP производитс€ на сервере, а не в браузере клиента, как, например JavaScript
  2.  од PHP может быть встроен непосредственно в тело HTML страницы, что выгодно отличает его от Perl.

Ќиже приведен пример PHP скрипта, вз€тый из фирменной документации по PHP, код PHP выделен синим цветом.

<html>

 <head>

 <title>Example</title>

 </head>



<body>

 <?php echo "Hi, I'm a PHP script!"; ?>

</body>

</html>

»з этого примера виден принцип встраивани€ кода PHP в HTML код страницы: все, что находитс€ между начальным и конечным тегом PHP (<?php и ?> соответственно) считаетс€ PHP кодом и обрабатываетс€ интерпретатором PHP.

Ќемного истории


—оздателем PHP первоначально был Rasmus Lerdorf, но сейчас разработкой этого €зыка занимаетс€ довольно большое количество людей, поставивших своей задачей его дальнейшее расширение и развитие. «а врем€ своего существовани€ (а перва€ верси€ PHP по€вилась в конце 1994 года) этот €зык претерпел очень значительные изменени€, коснувшиес€ как внешней его структуры (синтаксиса, набора функций и т.п.), так и внутренней организации. ѕоследний раз подобные глобальные изменени€ коснулись PHP с по€влением 4-й версии этого €зыка, когда PHP был полностью переписан с использованием Zend scripting engine, разработанным компанией Zend technologies. Ёто позволило добавить в синтаксис €зыка р€д новых функций, а также сделать его существенно быстрее, чем предыдущие версии. ѕричиной, по которой удалось добитьс€ таких результатов €вл€етс€ то, что Zend scripting engine €вл€етс€ наполовину компил€тором, т.е. компилирует PHP код, а уж затем производит его выполнение, тогда как предыдущие версии PHP были по своей сути интерпретаторами. ¬ наших публикаци€х мы в основном будем вести разговор именно о PHP версии 4.  стати, на момент публикации этой статьи последн€€ официальна€ верси€ PHP имеет номер 4.0.6

√де вз€ть PHP и информацию о нем?


ќсновной источник информации о PHP - это его официальный сайт: https://www.php.net/. «десь можно найти документацию дл€ php на различных €зыках (к сожалению русского среди них нет), посмотреть список имеющихс€ на данный момент багов и т.п. ≈динственный недостаток этого замечательного ресурса €вл€етс€ то, что он на английском €зыке :-) Ќо вам все равно придетс€ иногда пользоватьс€ им, даже если вы не знаете английского €зыка - хот€ бы дл€ того, чтобы скачать себе новую версию PHP :-)

Ќеобходимо заметить, что PHP Manual, €вл€ющийс€ официальной документацией €зыка PHP - это именно тот документ, к которому следует обращатьс€ при возникновении каких-либо вопросов. ќчень хорошо, если вы будете иметь его у себ€ на локальном диске и скачивать новую версию документации вместе с каждой новой версией PHP. “олько так можно чувствовать себ€ в всегда в курсе последних изменений в €зыке, которым вы пользуетесь.

≈ще один замечательные ресурс, посв€щенный PHP - PHP Builder. Ётот ресурс содержит просто море информации: статьи, форумы и т.п. ѕросто кладезь информации дл€ любого, кто хочет узнать что-нибудь новое о PHP и... владеет английским €зыком :-)   сожалению русско€зычного ресурса подобного уровн€ пока нет (или мне не удалось его найти), поэтому приведу лишь пару ссылок на те ресурсы по PHP, которые содержат действительно полезную информацию:

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

Ёто то, что касаетс€ общей информации о PHP. ¬ отсутствие дистрибутива PHP она не слишком полезна. ÷ентром распространени€ дистрибутивов €вл€етс€ официальный сайт. ¬ разделе downloads вы всегда можете скачать последнюю официальную версию как в виде исходных текстов (а PHP распростран€етс€ именно в виде исходных текстов), что необходимо дл€ пользователей Unix, так и в виде готового к использованию продукта дл€ Windows. “ам же можно скачать и несколько более ранних версий, хот€, как правило, это не нужно, т.к. официальные версии PHP (в отличие от версий дл€ разработчиков) достаточно стабильны в работе.  роме этого дл€ пользователей Windows € хотел бы посоветовать еще один очень хороший ресурс, предоставл€ющий дистрибутивы PHP, собранные именно дл€ этой операционной системы. Ёто www.php4win.de. ќтличие этих дистрибутивов как правило в том, что они более полные, т.е. содержат большее количество расширений PHP в готовом дл€ использовани€ виде, т.к. дистрибутивы с официального сайта как правило содержат лишь основной набор расширений.

 роме того не следует забывать, что работа над PHP продолжаетс€ посто€нно, по€вл€ютс€ новые возможности, функции, модули и т.п. ј официальные версии €зыка между тем выход€т лишь раз в несколько мес€цев. „то делать, если очень хочетс€ "пощупать" новую версию PHP еще до выхода официального релиза? ќтвет один - скачать т.н. "девелоперскую" версию PHP. Ёти версии собираютс€ автоматически каждый день из самых последних версий исходных текстов PHP. ќднако нельз€ забывать, что дл€ этих версий (в отличие от официального релиза) никто не может гарантировать вам даже то, что скачанный вами дистрибутив хот€ бы будет запускатьс€, не говор€ уже о том, чтобы нормально работать. Ёти версии предназначены в первую очередь дл€ разработчиков €зыка и бета-тестеров. Ќо если вам все равно интересно попробовать, то загл€ните сюда: snaps.php.net

—интаксис PHP


 ак уже было сказано ранее - синтаксис PHP во многом заимствован из таких €зыков как C, Java и Perl. ѕоэтому, если вы знакомы хот€ бы с одним из них - вам не составит особого труда просто сесть и начать писать программы на PHP. ≈сть у нас стать€ —интаксис €зыка php. «десь самые основы рассмотены. «десь мы не будем подробно останавливатьс€ на описании синтаксиса - он хорошо описан в PHP Manual. ќднако мне хотелось бы остановитьс€ на некоторых аспектах, которые отличают PHP от других €зыков.

»мена переменных


Ћюба€ переменна€ в PHP имеет им€, начинающеес€ со знака $, например $variable. Ћюд€м, привыкших к C/C++-подобным €зыкам этот принцип именовани€ переменных может показатьс€ странным, но на самом деле такой подход имеет определенные преимущества.

  1. ѕри таком способе формировани€ имен переменных их очень легко отличить от остального кода. ≈сли в других €зыках иногда может возникать путаница с тем, что при первом взгл€де на код не всегда €сно - где здесь переменные, а где функции, то в PHP этот вопрос даже не встает.
  2. ƒанный принцип позвол€ет очень просто и элегантно реализовать функциональность, просто недоступную иначе. Ќапример, ссылка на переменную по ее имени, хран€щемус€ в другой переменной:
 $name = 'value';

 $value = 5;

 echo $$name;

¬ данном примере PHP выведет результат 5. “акие фокусы стали возможны из-за заложенного в PHP принципа: "anything is an expression" (люба€ вещь €вл€етс€ выражением). »сход€ из этого PHP воспринимает выражение $$name следующим образом:

  • парсер встречает символ $, а это значит, что следующее выражение €вл€етс€ именем переменной
  • парсер встречает еще один символ $, и продолжает поиски имени уже другой переменной, значение которой необходимо дл€ вычислени€ значени€ предыдущего выражени€.
  • парсер получает им€ name, находит переменную с таким именем, берет ее значение ('value') и возвращаетс€ назад.
  • поскольку на предыдущем шаге мы искали им€ переменной, то значение только что вычисленного выражени€ воспринимаетс€ именно как им€ переменной. ѕарсер ищет переменную с таким именем (value) и возвращает ее результат (5).

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

—троки php


¬озможность однозначно идентифицировать переменную позволила создател€м PHP дать возможность программистам использовать переменные непосредственно внутри строк! ѕример подобного использовани€:

 $name = 'John';

 $age = 23;

 echo "$name is $age years old";

¬ качестве результата мы получим строку: John is 23 years old. Ќе правда ли, это исключительно удобно? ќднако необходимо обратить ваше внимание на одну деталь - в PHP, в отличие от многих других €зыков, различаютс€ строки, заключенные в одинарные и двойные кавычки. » подобное замещение имен переменных их значени€ми производитс€ только в строках, заключенных в двойные кавычки! ќчень важно всегда помнить об этом, дабы избежать ошибок.

—троки, заключенные в двойные кавычки могут содержать и более сложные выражени€. ƒл€ этого необходимо заключить их в фигурные скобки:

 $man = array('John',23);

 echo "{$man[0]} is {$man[1]} years old";

–езультат будет таким же, как и в предыдущем примере.

≈ще одной интересной особенностью работы PHP со строками €вл€етс€ поддержка т.н. here docs. Ќиже приведен пример:

 $str = <<<TEXT



 There can be any text

 which will be stored

 into a string

 right in the same way

 as it

 typed here

TEXT;

¬ этом случае значением переменной будет весь текст, содержащийс€ между начальным и конечным маркерами (в данном случае это строка TEXT, но этот маркер может быть любой последовательностью символов). ѕризнаком того, что это here doc, €вл€етс€ наличие <<< непосредственно после знака присваивани€. ƒанный механизм очень удобен в случае, если строке необходимо присвоить какой-то сложный текст, особенно, если необходимо сохранить его форматирование.  стати, в случае использовани€ here docs вы также имеете возможность использовани€ переменных внутри строки как это было описано ранее.

ћассивы

ћассивы в PHP - это очень мощный и гибкий механизм. ќн позволит вам сделать практически все, что вы только можете пожелать сделать с массивами. ѕоддерживаютс€ как обычные, так и ассоциативные массивы, причем они могут быть смешаны в любом пор€дке даже в пределах одного массива. ѕоддерживаютс€ вложенные массивы, их вложенность никак €вно не ограничена. ¬ PHP существует большое количество функций дл€ работы с массивами, они помогут вам выполнить большинство необходимых операций без лишних затрат времени и сил.

 роме того, необходимо отметить еще одну особенность PHP при работе с массивами: в отличие от других €зыков PHP позвол€ет задавать массивы практически любой сложности непосредственно в теле программы! ¬озможно с первого взгл€да эта возможность не покажетс€ вам такой уж важной, однако это не так. ¬ вашей практике вам не раз придетс€ столкнутьс€ с необходимостью описани€ какой-нибудь сложной структуры данных и наполнением этой структуры данными. ¬ других €зыках дл€ этого как правило приходитс€ писать дополнительный код, что не всегда удобно. ¬ PHP же вы можете сделать это очень просто и элегантно:

$data = array(1,10,100,1000, // „исленные данные

 'Some text','Another text', // —троковые данные

 'name'=>'John','age'=>23, // јссоциативные св€зи в массиве

 'date'=>array('day'=>10,'month'=>'may','year'=>2001)); //¬ложенный массив

 ак видите - различные данные могут быть совмещены вместе в единой структуре без каких-либо проблем! ѕосмотрим, как можно обратитьс€ к этим данным:

 echo $data[1]; // –езультат - 10

 echo $data[5]; // –езультат - 'Another text'

 echo $data['age']; // –езультат - 23

 echo $data['date']['month']; // –езультат - 'may'

Variable scope

јнглийский термин, вынесенный в заголовок переводитс€ на русский как "область видимости переменной", но в оригинале этот термин намного пон€тнее :-)

ѕод этим термином подразумеваетс€ то, что люба€ переменна€, описанна€ в программе имеет свою область видимости, другими словами если переменна€ описана в каком-то месте программы, то это отнюдь не означает, что она автоматически становитс€ видимой в любом другом месте этой программы.

¬ PHP на этот счет есть свои особенности. —ама€ "странна€" вещь, с которой сталкиваетс€ человек при знакомстве с PHP это то, что переменна€, описанна€ вне функции невидима внутри нее! ¬ других €зыках программировани€ мы привыкли к тому, что глобальные переменные программы видны везде, но в PHP это не так. Ќо посмотрев на эту "странность" повнимательнее можно заметить, что она имеет больше выгоды, нежели неудобств, т.к. €вл€етс€ своего рода "защитным механизмом", который не позволит вам случайно перепутать локальную и глобальную переменную, что подчас приводит к очень т€желым последстви€м.

 ак же получить доступ к глобальным переменным из функции? ≈сть 2 способа сделать это:

  1. »спользовать глобальный ассоциативный массив $GLOBALS. Ёто единственна€ переменна€ в PHP, котора€ видна отовсюду и котора€ "содержит" в себе все глобальные переменные, имеющиес€ в программе. “.о. если вы внутри функции обращаетесь к переменной $variable - то вы обращаетесь к локальной переменной, а если $GLOBALS['variable'] - то к глобальной.
 function myFunction() {

 $variable = 5; // ѕрисваиваем значение локальной переменной

 $GLOBALS['variable'] = 10; // ѕрисваиваем значение глобальной переменной

 };

  1. »спользовать ключевое слово global. ќно позволит вам задать список глобальных переменных, которые будут видимы внутри функции:
 function myFunction() {

 global $variable;

 $variable = 10; // ѕрисваиваем значение глобальной переменной

 };

„то дальше?


Ќа этом мы пока остановимс€. —интаксис PHP содержит множество интересных решений, здесь мы рассмотрели лишь некоторые из них. ¬озможно мы посв€тим еще один выпуск рассказу о синтаксисе этого €зыка, а затем перейдем к более сложным и интересным вещам. »так, что вас ожидает в дальнейшем?

  • –абота с массивами
  • –абота с объектами
  • –абота со ссылками
  • –абота с сесси€ми
  • ќбработка данных форм, upload файлов и т.п.
  • Regular expressions
  • –абота с базами данных
  • –абота с XML/XSLT
  • „то-то еще? —прашивайте на форуме!

 онечно, материал не об€зательно будет идти именно в такой последовательности, здесь многое зависит от вас и от вашей реакции на наши статьи. ≈сли вы хотите узнать что-то, если у вас есть вопрос или проблема и вы не знаете ответа на них - пишите, спрашивайте, мы постараемс€ вам помочь!



јвтор: јлександр √рималовский




ѕри перепечатке информации делайте, пожалуйста, ссылку на наш сайт (либо поделитьс€ вконтакте, гугл+ или делитесь в одноклассниках статьЄй). —пасибо!

»сточник: www.wr-script.ru©, 2004-2024г.

ƒелитесь с друзь€ми в соцсет€х. јктивные комментаторы получают свежие скрипты и бесплатные доработки от WR-Script.ru!

¬ернутьс€ к стать€м помощи WEB-мастеру

WR-–°—З—С—В—З–Є–Ї