31
2.2.2 PHP бағдарламасының негіздері
PHP - сайтты құруға арналған программалау тілі. PHP сайт жұмысын
автоматтандыруға көмектеседі. Бұл серверде орындалатын HTML-ге
ендірілген скрипт. PHP - дің JavaScript- тен айырмашылығы, PHP скрипті
серверде орындалып нәтижені клиентке көрсетеді, ал JavaScript- тің коды
клиенттік машинаға беріліп сол жерде орындалады.
Өткен ғасырда «әлемдік деңгейдегі» сайт жасау үшін HTML тілін біліп
және көркем стильге ие болу жеткілікті еді. Біраз уақыт өте талаптар
күрделене түсті: JavaScript пен Dynamic HTML-ді қолдану ескіре түсті
(кертартпаға айналды), ал оларды қолданбау web- бет дизайнының көркін
кетіреді. Кейін корпоративті сайттарды жасау үшін C++ және Perl тілдерін
қолдану енді. Бірақ web-дизайнерлер мұндай технологияларды пайдалана
алмағандықтан, скриптер тілінің күрделі мүмкіндіктерін қамтитын және де
қолдануға, үйренуге қарапайым тіл php шықты.
PHP мүмкіндіктері
.
PHP көмегімен барлығын да жасауға болады:
пішіндерде мәліметтерді өңдеу, динамикалық беттерді генерациялау, куки
(cookies) сеанстарын қабылдау және жіберу. Бұдан басқа, PHP көптеген
мәліметтер қорын (databases) қолдайды. Сонымен қатар, PHP- IMAP, SNMP,
NNTP, POP3 және HTTP хаттамаларын түсінеді де, сокеттермен жұмыс істеу
мүмкіндігі бар, және басқа да хаттамалармен қарым қатынас жасай алады.
PHP-дың айқын ерекшеліктерінің бірі – ол серверлердің мәліметтер
қорымен жұмыс істеу үйлесімділігі. Ол үшін web- серверде мәліметтер
қорымен жұмыс істейтін бағдарламаны орнатып (көбіне қолданылатыны
MySQL), онымен жұмыс істейтін команданы PHP скриптің құрамына қосу
керек. Тілдің мүмкіндіктерін түрлі функциялардан тұратын қосымша
модульдердің көмегімен кеңейтуге болады. Олар PHP- интерпретаторы
(түсіндірушісі) орнатылған жерде болады. Мысалы, Zlib модулі PHP
бағдарламасына
.zip форматындағы мұрағаттармен жұмыс істеуге
көмектеседі, ал libswf – Flash роликтерімен.
PHP тілінде жазылған бағдарлама серверде өңделеді. Браузерлер PHP
коды бар бетке сұраныс жібереді. Сервер сұранысты РНР интерпретаторына
орындауға береді, интерпретатор генерацияланған HTML кодты серверге
қайтарады, соңында сервер клиентке нәтижені көрсетеді. Ешқандай PHP код
браузерге түспейді. Бастапқы PHP кодты көру мүмкін емес.
PHP кемшіліктері.Өзінің идеологиясы бойынша алғашында PHP
кішігірім скриптерді жазуға бағытталған еді. PHP интерпретацияланатын тіл
болғандықтан, компиляцияланатын C тілімен жылдамдығы бойынша
салыстырыла алмайды. Алайда, көлемі аз бағдарламаларды жазуға PHP-ға
теңдесі жоқ[11].
РНР-дің қолдануын үш топқа бөлуге болады:
1)
Ең оңайы, бірақ күрделісі – бұл РНР тілінде сайт және модульдерді
құрастыру. Сайттың тұрақты бөліктерін (мәзір, денесін, баннерлерін) жеке
файлдарға жазып, шақырып отыру – әр бетке жазғанша әлдеқайда жеңіл.
Мысалы, мәзірге жаңа бөлімді қосса.
32
2)
Келесісі – кішігірім жеке бағдарламаларды құру. Ол сауалнама,
конференция, форум болуы және қандай да бір ақпаратты серверге сақтау
үшін РНР қолданылуы мүмкін.
3)
Материалды сайтқа FTP арқылы жүктемей, админ панелі арқылы
қонақ кітабының формасын толтыратындай енгізу. Бұл жағдайда 2 бағдарлама
жазылады, бірі администратордың сайтқа ақпаратты ендіруі мен екіншісі,
кірушілерге ақпартты көрсету. Қазіргі заманғы сайттың көбісі осылай
ұйымдастырылған.
Алғашында РНР Personal Home Page сөзінің қысқартылуы болған, енді
Personal Hypertext PreProcessor мағынасында.
PHP желi ғаламтор үшiн программалаудың төңiрегiдегi әйгiлi скрипт
тiлдерiнiң, орындаудың жылдамдығы, бай функционалдықтың бiрi және PHP
лицензиясы негiзiнде бастапқы кодтарды таратуға өз арқасында оңай. Веб-
сайт құрылыстың төңiрегінде мәлiмдiлiк әзiрлеу веб-қосымша үшiн кiрiктiрме
құрал-жабдықтарды үлкен теруi бар болумен анықталады. PHP синтаксисі СИ
тілінiң синтаксисіне ұқсас. Кейбір элементтер, мысалға, ассоциативті массив
және foreach циклі Perl алынған [11].
Бағдарлама жұмыс үшiн модуль пайдаланылатын айнымалы суреттеуге
талап етпейдi. Кез келген бағдарлама PHP тікелей оператордан басталуы
мүмкін. PHP шектегіш ішіндегі кодты орындайды. Ал шектегіш
сыртында тұрғандар ешқандай өзгертулерсіз шығарылады. Сонымен қатар,
?> және деп жазуға да рұқсат бар.
Айнымалылар $ символымен жазылады, айнымалының түрi жариялауға
басталуға ие болу қажеттi емес. Айнымалылар, функциялар және класстар
сезгіш регистрге қатысты. Тұрақты шама да сезгіш регистрге қатысты.
Айнымалы
апостроф
алынған
жолдардағыны
немесе
қосарланған
тырнақшалар және (оператор көмегiмен жасалған жолдар) heredoc-жолдары
орындалады. PHP жаңа жолға өтуді пробел ретінде қарайды, бұл еркiн
форматтағы HTML тағы басқа тiлдер сияқты кемшiлiк. Нұсқау үтiр-нүктенiң
көмегiмен бөлiнедi, кейбір жағдайларды қоспағанда, құрылымды тану if/else
кейiн және айналымдар.
PHP түсiнiктеме үш түрiндегi қолдайды: (шектелген/* */) си, (
бастайтын және жол жүретiн ақырына дейiн) C++ тiлдiң стилiнде және (жол
ақырына дейiн) қабық UNIX.
Мәлiметтерлердi түрлер. PHP динамикалық типтелуi бар бағдарлама
жасау тiлi, талап етпейтiн жөн-жоба түрiндегi айнымалыларды тануда болып
көрiнедi, айнымалы сонымен бiрге хабарлаудың өзiне. Дегенмен, скалярлық
түрлердiң арасындағы өзгерту PHP қосымша күштерсiз (көбiнесе анық емес
жүзеге асыру кең мүмкiндiктердi iлiгедi және айқын түрлердiң өзгеруi үшiн).
Скалярлық түрлерге:
-
бүтін түр (integer);
-
мәліметтердің заттық түрі (float, double);
-
логикалық түр (boolean);
-
жолдар түрі (string);
33
-
арнаулы түрі NULL.
PHP (integer) бүтiн сандардың ауқымы ( 2 147 483 648 «минус» 2 147 483
647 дейiн 32-биттік таңбалы бүтiн сандардың ауқымы әдетте) тұғырдан
бағынышты болады. Санды ондық, сегiздiк және он алтылық есептеу
жүйелерiмен беруге болады. PHP өңдеушiлерге (boolean) логикалық түр,
қабiлеттi («ақиқат») ғана екi мағына TRUE қабылдауға iлiгедi және («жалған»)
FALSE. Жолда 0-шi сан, жаңа жол, нөл логикалық түрге өзгертуде «0», NULL
және бос массив тең FALSE есептейдi. Қалған мағыналар бәрi TRUE
автоматты түрде түрлендiредi. NULL арнаулы түр айнымалылар үшiн белгiлi
бiр мәнсiз арналған. Жалғыз мағына осы NULL тұрақты шама түрiндегi болып
көрiнедi. NULL түр айнымалысы сонымен бiрге құрылым unset көмегiмен
алшақ айнымалы белгiлi емес NULL тұрақты шама белгiлi айнымалыларды
қабылдайды. Сыртқы ресурстарға сiлтеме түрі (resource) «ресурс» ие болады.
Айнымалы осы дерекқор файлдары, динамикалық бейнелер, қорытынды
кестелер сыртқы объектiлермен басқаруға рұқсат беретiн дескриптор.
Массив (array) санмен көрсетiлгенді қолдайды және тiзбектiк кiлттер
және гетерогендi болып көрiнедi. Массив кез-келген түрлердi мағына, басқа
массивтердi қоса асырай алады. Элементтердің тәртiбі және кілтері оларда
сақталады. Foreach орынына санауышы бар for циклда пайдаланудың жанында
мүмкiн
күтпеген
мiнез-құлық.
Мысалы,
үйреншiктi
кiтапханадан
функцияларымен сандық индекстермен массивтiң iрiктеуiнiң жанында
осылай, iрiктейдi.
Жаhандық массивтер. PHP жаhандық массивтермен басшылық нұсқау
global жаhандық көру кеңiстiгiн пайдаланатын алдын ала анықталған
массивтер деп аталады. Көбiнесе бұл (GET-сұраныс, POST әдiстерін
жiберудiң жанында пiшiндердi даланың параметрлерi) қолданушының
сауалына кiретiн мәлiметтерлерi асырау массивiтері.
Жаhандық массивтер бәрi $GLOBALS және $_REQUEST, (алтыншы
версиясында шығаруды олар жоспарлайды) қол жететiн шейiн бесiншi нобай
PHP ұзын есiмдерi бар әлдеқашанғы аналогтерге ие болады. Қорыта келгенде,
$_GET үндеу [year ] және $HTTP_GET_VARS көру кеңiстiгiн қоспағанда [year
] бiрдей: массив есiмі «ұзын» жаhандық болып көрiнбейдi.
Интерпретатордың ерекшелiгi. PHP-скрипты өңделген қосымшаның
кроссплатформасын қамтамасыз ететiн тәртiпте интерпретаторды әдетте
жұмыстанады (бастапқы код лексикалық талдау және лексемалардың ұрпағы,
алынған лексемалар синтаксистiк талдау, кодтың байтын генерациялау,
интерпретатордың код байтын орындау).
Желіге арналған бағдарламалау обылысында PHP
әйгілі скрипттік
тілдердің бірі (JSP, Perl ASP.NET) ол өзінің қарапйымдыолығына, орындалу
жылдамдылығына жоғарғы функционалдылығына және PHP лицензиясының
негізінде таратылатын бастапқы кодтарына байланысты PHP ядроның
болуымен, қосылатын модульдердің болуымен, «кеңейтілулердің» болуымен
ерекшеленеді, олар деректер қорымен, сокеттермен, динамикалық
34
графиктермен, криптографиялық кітапханалармен, PDF түріндегі құжаттар
жіне т.с.с жұмыс істеуге арналған.
Арнаулы бағдарламалық қамтамасыз етудi пайдалану қосымшалардың
тезәрекеттiгiнiң көбеюi үшiн мүмкiн, үдеткiш деп аталатын. Олардың жұмысы
қағидат бiр күнi шығарылған байттың бүркемелеуiнде қосылады
есте код
және/немесе дискте, қорыта келгенде, қосымша жұмыс барысынан кезең
жағдай әйтеуiр жұмыстың елеулi жеделдетуiне шығарылады. Маңызды
ерекшелiктi болып көрiнетін өңдеушi үлестiрудiң қамын жеуге қажеттiсі естiң
босауы. PHP өзегінде си автоматты басқару үшiн қаржыны жүзеге асырады.
Барлық ерекшеленген си скрипті жүйе жұмыс аяғынан кейiн қайтарады.
Кеңейту. Интерпретатор өзектен тұрады және қосылатын модульдар,
«кеңейтулер», таныстыратын өздердiң динамикалық кiтапханалары. Кеңейту
тiлдiң негiзгi мүмкiндiктерi, дерекқормен жұмыс үшiн мүмкiндiк бере
толықтыруға рұқсат береді, қалыпты PDF сокеттермен, динамикалық жазу-
сызумен, крифтографиялық кiтапханалар, құжаттарымен ұқсас [12].
РНР/FI. 1994 жылы дат программисті (қазір Канадада тұратын) расмус
Лердорф (Rasmus Lerdorf) Perl/CGI-да оның онлайн-резюмесінің қараушылар
санын санау және шығару үшін, HTML-құжаттардың шаблондарын өңдейтін
скрипттер жиынын жазды. Лердорф ол жиынды Personal Home Page (Жеке Үй
беті)
деп
атады.
Кейіннен
скрипттер
интерпритаторы
Perl-дың
функционалығы және жылдамдығы жеткіліксіз болғандықтан Лердорф Си
тіліндегі жаңа РНР/FI шаблондар интерпритаторын құрды. РНР/FI - ағыл.
Personal home Page/Forms Interpreter – «Жеке Үй беті/Форма интерпритаторы».
Perl стильіндегі айнымалылар түрі ($айнымалы_аты мәнді шығару үшін),
формалардың автоматты өңделуі және HTML-мәтінге іштей орындалуы және
т.б. Жаңа туған тіл қарапайым және шектелген синтаксисімен ерекшеленеді.
1997 жылы ұзақ бета-тестілеуден кейін өңдеуіштің Си тілінде жазылған
екінші нұсқасы шықты – РНР/FI 2.0.
Оны әлемнің барлық интернет-домендердің 1% (жуық мөлшермен 50
мың) қолданды.
РНР3. Бүгінгі күні біз білетін РНР-ге ұқсас ең алғашқы нұсқасы РНР3.0
болатын. 1997 жылы екі израильдік программистер Энди Гутмас (Andi
Gutmans) және Зив Сураски (Zeev Suraski) кодты басынан бастап жазды:
құраушылар РНР/FI 2.0-ді электронды коммерция бағдарламаларын құруға
жарамсыз деп шешті. РНР 3.0 нұсқасымен бірігіп жұмыс істеу үшін РНР/FI 2.0
құраушыларын біріктіріп, РНР 3.0-ті РНР/FI-дің ресми мұрагері деп
жариялауды шешті, ал РНР/FI-ді құру толығымен тоқтатылды.
РНР3.0-тің күшті жақтарының бірі ядроны кеңейту мүмкіндігі болды.
Кейіннен кеңейтулерді жазу интерфейсі РНР-ға өз модульдерін жазатын
көптеген құраушыларды әкелді. Бұл жағдай РНР-ге үлкен көлемдегі деректер
қорымен, протоколдарымен, API-дің көпшілігін қолдауға мүмкіндік берді.
Негізінен, бұл жағдай сәттіліктің алғашқы кілті болды. Бірақ тағы бір шартты
айта кеткен жөн, ол – жаңа, қуаты жоғарырақ және объектті-бағытталған
программалауды қолдайтын толық синтаксисі.
35
Толығымен жаңа бағдарламалау тілі жаңа атау алды. Құраушылар
РНР/FI абревиатурасындағы жеке қолданым жайлы қосымшаны қолдауданг
бас тартты. Тіл жай ғана РНР (ағыл. РНР: Hypertext Preprocessor- «РНР:
Гипермәтін процессоры») деп аталады.
1998 жылдың соңында ондаған мың пайдаланушылармен қолданыс
тапты. Жүздеген мың веб-сайттар өздерінің РНР-ді қолданаиынын айтты. Сол
кезде РНР 3.0 интернеттің 10% веб-серверлеріне орнатылған болатын.
РНР 3.0 ресми түрде 1998 жылдың маусым айында, 9 ай бұқаралық
тестілеуден кейін жарық көрді.
РНР4. 1998 жылы РНР 3.0 ресми түрде шыққаннан кейін, Энди Гутманс
және Зив Сураски РНР ядросын қайта құрастыра бастады. Оны қарастыру
себебі қиын қосымша программалардың өнімділігін артыру және РНР
кодының базисінің модульдігін жақсарту болды, РНР 3.0-тің кеңейтілуі
деректер қорының жиынымен сәтті жұмыс істеуге және көп көлемде әртүрлі
API мен протоколдарды қолдауға мүмкіндік берді, бірақ РНР 3.0-тің
модульдерді қолдау сапасы төмен болды және тиімсіз жұмыс істеді.
Zend Engine (құрушылардың атынан, Зива және Энди, сонымен қатар
Zend Technologies-ті құрушылар) деп аталған жаңа қозғауыш қойылған
есептерді жақсы шешіп отырды және 1999 жылдың ортасында жарық көрді.
Осы қозғауышқа негізделген және өзімен бірге қосымша функциялар жиынын
алып келген РНР4.0 ресми түрде 2000 жылдың мамыр айында шықты (РНР 3.0
шыққаннан екі жыл өткеннен соң).
РНР5. РНР-дің бесінші нұсқасы құраушылармен 2004 жылы 13 тамызда
шығарылды. Өзгертулерге интерпритатордың тиімділігін арттырытын Zend
(Zend Engine 2) ядросының жаңаруы жатады. XML өлшеуіш тілінің қолдауы
ендірілген. Java-да қолданылатын модельдерге ұқсас обьектті-бағытталған
программалау функциялары толық өзгертілген. Айта кетсек, ашық, жабық
және қорғалған мүшелер мен әдістер, интерфейстер мен обьекттерді клондау
ендірілген. Дегенмен, жаңартулар алдыңғы нұсқалармен кодты сәйкестікті
сақтау үшін жасалған [13]. Қазіргі кезде РНР6 нұсқаларының dev-нұсқасының
болуына қарамастан, ең тұрақты және кең қолданылатын 5.х.х нұсқалары
болып табылады.
Web-қосымша программаларын құрушыларға web-беттер – ол мәтін мен
суреттерге ғана емес екенін айтудың қажеті жоқ. Жақсы сайт
пайдаланушымен қандайда бір деңгейдегі интерактивтілікті қолдау керек:
ақпаратты іздеу өнімді сату, конференциялар және т.б. негізінен бұл
мүмкіншіліктердің барлығы Perl-да жазылған CGI-скрипттермен орындалған.
Бірақ, CGI-скрипттердің масштабталу мүмкіндігі өте төмен. Әрбір CGI
шақыру ядродан жаңа процесстің тууын талап етеді, ал ол процессор уақытын
жоғарылатады және оперативті жадыны жұмсайды.
PHP басқа нұсқаны ұсынады – ол Web-cервер бөлігі ретінде жұмыс
істейді, осындац мүмкіндігімен ол Microsoft-тің ASP-не ұқсас. PHP синтаксисі
Си немесе Perl синтаксисіне өте ұқсас. Бағдарламалаумен таныс адамдар
программаларды PHP тілінде жазуға өте тез үйренуге мүмкіндіктері бар. Бұл
36
тілде деректерді типтеудің арнайы бағыты жоқ және жады бөлу мен
босатудың керегі жоқ [14].
Достарыңызбен бөлісу: |