В този урок ще разработим първото ни PHP приложение. Има световна практика в изучаването на програмни езици, според която първата ни програма трябва да изведе съвсем елементарен текст, гласящ "Здравей, свят!", а на английски език то е "Hello World!". Точно това ще направим в нашата първа програма.

Ще я разработим на NetBeans - софтуерен продукт, осигуряващ изключително удобна среда за разработка. Също така NetBeans е безплатен, така че няма нужда да плащате каквото и да е за изпозлването му при работата си.

Удобство при работата с NetBeans е създаването на проект, което в същността си представлява групирането на файлове по удобен за вас начин. При работата с NetBeans софтуерът създава служебни папки, които нямат отношение с PHP. Те не са ви необходими при качване на сайта ви на сървъра.

При създаването на нови проекти NetBeans създава index.php, който е входният файл за всеки проект. Всеки файл, който е с името index.html или index.php , се изпълнява автоматично от Apache, тъй като Apache работи по този начин. Това е стандарт в програмирането и при работата с Apache.

 

Първото ни Hello World приложение

Да изпишем текста "Hello World" в браузъра. Това става по следния начин:

<html>
    <head>
        <meta charset="windows-1251">
        <title></title>
    </head>
    <body>
        <?php


       echo 'hello world';
        
        ?>
    </body>
</html>

Току-що изписахме текста "Hello World" в браузъра, но как стана това? PHP първоначално е разработен да генерира HTML код, така че няма никакъв проблем HTML & PHP да присъстват в един файл, тоест те могат да се комбинират. Но преди да преминем към обяснението какво точно се случва при изпълнението на echo 'hello world';  , нека обясним как точно се изпълнява една обикновена заявка.

Когато вие, ползвайки вашия компютър, напишете даден адрес, без значение дали това е URL на уебсайт, localhost или нещо друго, вашият браузър намира уеб сървъра, който обслужва този адрес. Когато е localhost, той знае, че е на вашия компютър, така че се свързва в него. Ако адресът е някой друг, той прави заявка към него, тоест му казва "искам да видя съдържанието на еди кой си файл, например index.php". Когато уеб сървърът приеме заявката, той проверява дали този ресурс е валиден, дали може да бъде изпълнен (проверяват се всички права, сигурност и така нататък) и чак тогава Apache проверява дали това е HTML или PHP файл. Ако е HTML страница, уеб сървърът я прочита от твърдия диск и праща съдържанието ѝ обратно към вашия браузър, но ако заявката е PHP, тогава уеб сървърът ще види, че това е PHP заявка и тъй като той не може да я обработи, той праща заявка към самото PHP, тоест казва на PHP да обработи въпросната заявка, при което PHP се стартира, прочита този файл, извършва всички необходими проверки (например връзка с база данни или други ресурси), след което връща обратно резултата към уеб сървъра, който уеб сървър връща резултата към браузъра. Тоест, когато вие отворите PHP файл, уеб сървърът трябва да извика PHP, който да обработи самия файл

Когато уеб сървърът извика PHP за обработка, PHP вижда файла и започва да го чете отгоре-надолу. Четенето на файла се извършва отгоре-надолу, тоест първият ред ще бъде изпълнен преди втория, петият ред ще бъде изпълнен преди осмия и така нататък.

Когато PHP започва да чете например нашия код, той вижда, че това е най-обикновен html код:

<html>
    <head>
        <meta charset="windows-1251">
        <title></title>
    </head>
    <body>

PHP просто копира този HTML и просто го копира, без да го обработва, тъй като HTML е статично съдържание. При достигането на символа:

        <?php

това за PHP означава, че от този специален символ, всичко надолу ще бъде PHP, тоест оттам започва PHP кодът и той трябва да бъде изпълнен към PHP код. След този код вие можете да имате всичко, което е възможно да се направи с този програмен език - връзка с база данни, условни оператори, цикли, изключително сложни алгоритми и така нататък - всеки един валиден PHP код. PHP ще извърши обработката на този PHP код, ще сложи резултата от този PHP код. При достигането на този специален символ:

          ?>

това за PHP означава, че всичко след този символ не е PHP, а е най-обикновен HTML, тоест PHP няма да го обработи, а просто ще го прочете.

При достигане края на файла ще стане следното нещо:

PHP е прочел този код:

<html>
    <head>
        <meta charset="windows-1251">
        <title></title>
    </head>
    <body>

, достигнал е до:

        <?php
       echo 'hello world';
        
        ?>

,обработил е този код, след което е стигнал отново до най-обикновен HTML код:

    </body>
</html>

PHP ще събере целия резултат от изпълнението на файла в същата подредба, в която е кодът, и чак тогава ще изпрати резултата към браузъра. Ако видите впоследствие изходния код на браузъра ще видите, че става точно това. Обърнете внимание, че в изходния код не се вижда PHP кодът - няма начин да се види - не се виждат отварящи или затварящи тагове, без значение колко сложен е алгоритмът. Ако в изходния код по някакъв начин се виждат PHP таговете, това означава, че нещо е объркано в настройките на вашия уеб сървър.

Какво прави командата echo

В следващите уроци ще говорим в по-големи подробности за нея, но в момента приемете, че това е единственият начин за изпращане на резултат към уеб браузъра. Echo връща стойност на променливи, както ще видите в следващи уроци.


Какво ще стане, ако премахнем отварящия PHP таг <php

Тогава в браузъра ще видим следното нещо:

echo 'hello world';

Това се случва, защото, както споменахме по-рано, PHP чете файловете отгоре-надолу и при самото четене вижда, че имаме следния код:

<html>
    <head>
        <meta charset="windows-1251">
        <title></title>
    </head>
    <body>

       echo 'hello world'

        ?>
    </body>
</html>

Тъй като нямаме отварящ PHP таг, PHP счита всичко за най-обикновен HTML код и не го обработва, а просто го изпраща към уеб сървъра, който от своя страна го изпраща към браузъра.

Какво ще стане, ако премахнем затварящия PHP таг ?>

Тогава ще възникне грешка, която ще бъде разчетена като грешка в синтаксиса, но ето какво всъщност става: PHP започва да чете файла и стига до отварящия PHP таг <?php. Всичко след този таг за него е PHP код, който е валиден, но стига до реда </body> , който според синтаксиса на PHP е невалиден програмен код, тъй като ние никъде не сме казали, че PHP кодът трябва да спре и след еди кой си ред всичко е текст.

Колко отварящи и затварящи тагове можем да използваме във файла си?

Можем да използваме колкото си искаме отварящи и затварящи тагове в съдържанието, макар това да не е добра практика, тъй като създава редица неудобства при по-сложни алгоритми. За решаване на тези неудобства се ползват така наречените MVC темплейти, с които се разделя логиката от съдържанието.