PHP — разлика између измена
Садржај обрисан Садржај додат
м Разне исправке |
м Разне исправке; козметичке измене |
||
Ред 1:
__БЕЗКН__
{{Програмски језик
| назив = {{СТРАНИЦА}}
| слика = PHP-logo.svg
| натпис уз слику = PHP логотип
| оригинални назив =
| изговор на српском = пе-ха-пе
| модел = императивни, објектно-оријентисан
| настанак = {{start date and age|1995}}<ref name="mysqlconference">{{cite web |
| аутори = [[Расмус Лердорф]]
| дизајнери = Пе-ха-пе група (The PHP group)
| актуелна верзија = 7.2.7<ref name=php7final>{{cite web|url=https://php.net/archive/2016.php#id2016-11-10-1|title = News Archive – 2016: PHP 7.0.13 Released|date = 10. 11. 2016 |accessdate = 10. 11. 2016|website=php.net}}</ref>
| датум актуелне верзије = {{start date and age|2018|6|21}}
| типови = динамички, слаби
| имплементације =
| дијалекти =
| утицаји = [[C (програмски језик)|C]], [[Перл (програмски језик)|Перл]], [[Јава]], [[C++]], [[C Sharp|C#]], [[Python (програмски језик)|Пајтон]]
| утицао на = Php4delphi, Фалкон, Хак
| оперативни системи = [[Више-платформски]]
| лиценца = Пе-ха-пе лиценца
| сајт = {{URL|php.net}}
| сајт документације = {{URL|php.net/docs.php}}
}}
Ред 91:
== Структура програма ==
За разлику од већине програмских језика који поседују почетну функцију (<code>main</code> у [[C (програмски језик)|C]]-у, први блок <code>BEGIN</code> и [[Паскал (програмски језик)|Паскалу]], класа са <code>main</code> методом у [[Јава|Јави]] итд.), -{PHP}- [[датотека]], налик на већину скриптних језика, једноставно садржи скуп наредби, које се извршавају једна за другом, од прве до последње, где се последња уједно сматра и крајем -{PHP}- програма.
[[Датотека:Структура_PHP_скрита.jpg|мини|150п|<center>Структура PHP скрита]]
-{PHP}- датотеке могу да садрже следеће врсте елемената<ref name="микро">[http://www.mikroknjiga.rs/Knjige/RAZ4/01_RAZ4.pdf Микрокњига: PHP и MySQL: развој апликација за Веб, Лук Вилинг, Лаура Томсон .]. {{page|year=2009|isbn=978-86-7555-340-3|pages=}}</ref>:
* -{HTML}- ознаке
* Ознаке за -{PHP}-
* [[#Наредбе| -{PHP}- наредбе]]
* белине
* [[#Коментари|коментаре]]
Линија 170 ⟶ 171:
=== Променљиве ===
[[Промјенљива (програмирање)|Променљиве]] ({{јез-ен|variables}}) у -{PHP}- језику се представљају помоћу знака <code>$</code>, иза кога следи име променљиве. Име мора да почне словом или доњом цртом _ иза којег може да следи неограничен број слова, бројева или доњих црта, при чему се словом сматра слово латинице
Променљиве се не декларишу, а њихов тип се одређује према вредностима које им се у изразима додељују током програма, те постоји могућност да се тип променљиве промени.
Линија 176 ⟶ 177:
Пе-ха-пе има следеће типове променљивих:<ref name="php_tipovi">[http://www.php.net/manual/sr/language.types.intro.php PHP.net: Introduction, 20. август 2011, 7. новембар 2012]</ref>
* Основни типови променљивих:
**
**
**
**
* Сложени типови променљивих:
**
**
* Посебни типови променљивих:
**
**
Није неопходна додела почетних вредности, мада се препоручује, ради прегледности, безбедности и бољег разумевања кода, с обзиром да се њиховом применом у изразима који садрже мешовите типове података, могу добити различити резултати. Тако нпр:
Линија 214 ⟶ 215:
==== Корисне функције ====
За исписивање променљивих на стандардни излаз користе се две основне функције:
* <code>
* <code>
Обе су језички конструктори, па се при њиховом позивању не морају користити заграде. Разлика између једне и друге функције је у томе што функцији ''print'' може да се проследи само један аргумент, док ''echo'' може да штампа више њих одједном, тако да што при позиву променљиве стоје међусобно раздвојене запетом. Променљиве свих типова биће претворене у тип <code>string</code> приликом исписивања.
Линија 329 ⟶ 330:
| ++ || $a++ || $a = $a + 1
|-
|
|-
| += || $a += $b || $a = $a + $b
|-
|
|-|
|-
| /= || $a /= $b || $a = $a / $b
Линија 357 ⟶ 358:
|-
| === || идентично (тип и вредност) || $a === $b
|-|
|-|
|-|
|-|
|-
| > || веће од || $a > $b
|-|
|-
| >= || веће или једнако || $a >= $b
Линија 379 ⟶ 380:
! оператор !! назив !! употреба !! резултат
|-
|
|-
| && || [[логичка конјункција|конјункција]] || $a && $b || тачан ако су $а и $b тачни
|-
|
|}
* оператори над битовима ({{јез-ен|bitwise operators}}) омогућавају да се цео број обрађује као група битова којим је број представљен у меморији. У -{PHP}- немају велику примену.<ref name="микро" />
Линија 392 ⟶ 393:
! оператор !! назив !! употреба !! резултат
|-
|
|-
|
|-
| ~ || негација || ~$a || align=left | битови активни у $a нису активни у резултату и обрнуто
|-
| ^ || искључива дисјункција || $a ^ $b || align=left | битови активни или у $a или у $b, али не у оба, активни су и у резултату
|-|
|-
| >> || померање битова удесно || $a >> $b || align=left | помера битове у $a удесно за $b места
Линија 443 ⟶ 444:
|align=right|6.||Логичко не: !||здесна
|-
|align=right|7.||Аритметички оператори:
|-
|align=right|8.||Аритметички оператори: + -
Оператор за придруживање ниски:
||слева
|-
|align=right|9.||Оператори померања битова:
|-
|align=right|10.||Оператори провере неједнакости:
|-
|align=right|11.||Оператори провере једнакости: == != === !==||неасоцијативни
Линија 460 ⟶ 461:
|align=right|13.||Битско ексклузивно или: ^||слева
|-
|align=right|14.||Битско или:
|-
|align=right|15.||Логичко и:
|-
|align=right|16.||Логичко или:
|-
|align=right|17.||Условни оператор: ? :||слева
|-
|align=right|18.||Оператори доделе:
|-
|align=right|19.||Логичко и: and||слева
Линија 476 ⟶ 477:
|align=right|21.||Логичко или: or||слева
|-
|align=right|22.||Запета:
|}
Линија 512 ⟶ 513:
у трећем реду, оператори доделе <code>=</code> су асоцијативни здесна па ће се применити овим редоследом:
# додела вредности <code>$c</code>, што је <code>2</code>, променљивој <code>$b</code> и добиће се резултат <code>2</code>
# додела резултата <code>2</code> променљивој <code>$a</code> и добиће се резултат <code>2</code>
Ред 884:
Један од сложенијих типова променљивих су '''[[низ]]ови''' ({{јез-ен|arrays}}). Низ је група променљивих референцирана преко истог имена. За разлику од других програмских језика, овде елементи низа могу бити подаци различитог типа. У употреби су две врсте низова<ref>[http://imi.pmf.kg.ac.rs/component/docman/doc_view/480-wp-vezbe-4.html ИМИ ПМФ Крагујевац: Материјал за вежбе из Веб програмирања, приступ 25. октобар 2012]</ref>:
*
<source lang="php">
Ред 929:
?>
</source>
*
<source lang="php">
Ред 956:
|-
| === || идентично || $a === $б || израз је тачан ако су низови $а и $б имају исте парове индекс/вредност, по истом редоследу и типу података
|-|
|-|
|-|
|}
Приступ елементима низа је веома једноставан коришћењем угластих заграда []. -{PHP}- располаже великим бројем функција за рад са низовима.<ref name="арр" /><ref name="етф">{{Cite web |url=http://rti.etf.bg.ac.rs/rti/os4ip/P5.pdf |title = ЕТФ предавања: Интернет програмирање PHP, Проф др Бошко Николић, приступ 28. октобар 2012 |access-date = 29. 10. 2012 |archive-url=https://web.archive.org/web/20120906230122/http://rti.etf.bg.ac.rs/rti/os4ip/P5.pdf |archive-date =
{| class="wikitable" style="background: white;text-align: left"
Ред 1.066:
=== Функције ===
[[Функција (програмирање)|'''Функције''']] омогућавају извршавање одређеног блока [[#Наредбе|наредби]], које се понављају. -{PHP}- има доста већ уграђених, али постоји могућност дефинисиња сопствених функција. Функција може да се позове из неког другог дела скрипте, прослеђујући јој аргуменате, а она затим, када се изврши, може да врати неку вредност. Разлози због којег се користе функције могу бити<ref name="коре">{{Cite book|
* избегавање поновног писања већ написаног дела кода
* лакше разумевање кода
Ред 1.119:
Навођењем променљивих у листи аргумената, променљиве се могу проследити<ref name="веб" />.{{чињеница|date=02. 2016.}}<!--mrtva veza od tog datuma-->:
*
*
<source lang="php">
Ред 1.170:
Да би променљиве коришћене локално, у оквиру неке функције имале глобални карактер, односно да би њене вредности биле на располагању и ван функције, променљиве је неопходно посебно назанчити на један од следећих начина:
* коришћењем кључне речи
<code>
<source lang="php">
Ред 1.186:
?>
</source>
* коришћењем
<source lang="php">
<?php
Ред 1.266:
Читање садржаја, могуће је једино ако је датотека претходно успешно отворена. Може се извршити:
* линију по линију, помоћу функције <code>
<code>
Ред 1.274:
</code>
где је променљива која садржи показивач на ресурс (означена као <code>$фд</code> у примеру) једини обавезни параметар. Уз њега се може навести променљива у коју ће бити смештен број учитаних бајтова. Учитавање је могуће све док показивач не дође до [[EOF (рачунарство)|краја датотеке]]. Функција враћа учитану линију у колико се успешно извршила, односно вредност нетачно, ако је дошло до грешке. Учитана линија обично се смешта у низ или у знаковну промнљиву (<code>string</code>).
* целог садржаја који се смешта у низ помоћу функције <code>
* целог садржаја који се смешта у знаковну (текстуалну) променљиву <code>
Пошто је број отворених ресурса ограничен, када се заврше све потребне акције над датотеком, препоручује се њено затварање, помоћу функције <code>'''fclose'''</code>:
Ред 1.314:
</code>
Свакој од њих се прослеђује име датотеке и путања до ње.<ref name="етф" /> Навођење путање није обавезно у колико је она наведена у опцији <code>include-path</code> конфигурацијске датотеке <code>php.ini</code> или ако се датотека налази у истом [[директоријум]]у као и скрипта која позива спољашњу датотеку.<ref>[http://www.php.net/manual/sr/ini.core.php#ini.include-path PHP.net: ini.include-path, 20. август 2012, приступ 30. октобар 2012]</ref> Није обавезна ни употреба заграда, с обзиром да се ради о основним функцијама, најчешће се користе због лакше прегледности. Називи датотека, које се наводе као аргументи ових функција могу да буду произвољни, али се препоручује да њихове [[Екстензија (датотечни систем)|екстензије]] увек буду <code>.php</code> или <code>.inc.php</code>. У супротном, ако корисник покуша сам да отвори неку од оваквих датотека, интерпретатор неће неће препознати као PHP код и приказаће њихов садржај, као да се ради о обичним тексту.<ref name="орели">{{Cite book|
Све четири функције веома слично раде: укључују читав садржај наведене датотеке у текућу скрипту. Разлика између функције <code>include</code> и <code>require</code> је у понашању у случају да датотека не постоји или није видљива на наведеној путањи. У том случају функција <code>include</code> само даје упозорење, док је функција <code>require</code> „строжа“ и даје грешку, која зауставља извршавање скрипте.<ref name="орели" /> Суфикс <code>„_once“</code> се односи на функције и класе из спољашње датотеке. Њиме се појашњава да се деклрација објеката врши само једном, чиме се спречава вишеструко декларисање, које -{PHP}- не дозвољава, пошто иначе, иста спољашња датотека може да се наведе више пута, на различитим местима у програму.<ref name="орели" />
Ред 1.385:
</code>
Приликом избора имена класа важе иста правила, као и за имена функција и променљивих. Осим тога, интерпретатор не прави разлику између малих и великих слова, али је обичај да у именима класа почетак речи буде велико слово, а да остала слова буду мала, како би се разликовале од осталих идентификатора<ref name="етф" />. Својства<ref name="линк-ооп">[http://www.it-akademija.com/materijal-sa-predavanja/php-kurs/PHP08.pdf Линк груп, материјал: Објектно-оријентисано програмирање у PHP-у, приступ 31. октобар 2012]</ref>, односно '''атрибути''' ({{јез-ен|attributes}}), особине или карактеристике су скуп променљивих, од којих неке могу да имају почетну вредност. Вредност се дефинише преко једноставних израза, који не могу да садрже друге променљиве, нити функције. Акције<ref name="крстарица-класе" /> или понашање класе дефинише се преко '''метода'''<ref name="линк-ооп" />, које заправо имају улогу функција у [[strukturirano programiranje|структурном програмирању]],<ref name="крстарица-класе" /> с том разликом да је дозвољено да метода неке друге класе или спољашња корисничка функција носе исто име. Гледајући дефиницију класе, лако се може закључити да су то заправо колекције променљивих и функција, преко којих се дефинишу њена својства и понашање.<ref name="линк-ооп" /> Како својства, тако и методе могу имати различиту видљивост у односу на своје окружење. Ово се декларише преко кључних речи<ref name="оливер" />:
*
*
*
За методе важи правило да ако се не наведе ни једна од од ове три кључне речи, она се сматра јавном, док је код променљивих обавезно навести једну од три могућности за њихову доступност. Ово правило је уведено од пете верзије (-{PHP}-.5), док су у претходној верзији све методе и сви атрибути били јавни. Тада је за атрибуте било обавезно употребити кључну реч ''var'', која има исто значење као и ''public'', док за методе међутим, није било могућности избора доступности, све су биле јавне.<ref name="оливер" />
Ред 1.400:
За одређени објекат (инстанцу класе), да би се приступило неком атрибуту или методи:
* Искључиво унутар саме класе, користи се кључна реч <code>$this</code>, променљиве која означава сопствени објекат, уз оператор
<code>
Ред 1.409:
</source>
</code>
* Ван класе, једном када је направљен нови објекат и пошто се извршила метода конструктора, помоћу имена конкретног објекта и оператора
<code>
<source lang="php">
Ред 1.541:
==== Наслеђивање ====
[[Датотека:Наслеђивање PHP.jpg|мини|350п|<center>Различити начини једноструког наслеђивања класа]]
'''Наслеђивање''' ({{јез-ен|Inheritance}}) је једна од најкорисинијих алатки у објектно-оријентисаном програмирању, која омогућава да корисник дефинише основну класу обично са једноставнијим или заједничким атрибутама и методама, и на основу ње изведе нове класе, које садрже извесне специфичности у односу на основну класу. Каже се да ако је Б класа исто што и А, а не важи обрнуто, онда је А наткласа или основна класа, а Б је изведена класа.<ref name="ЦАЕ">Computer Aided Education S.A: Programación páginas web con PHP material Herencia{{ес}}</ref> Основна класа се назива родитељ или наткласа ({{јез-ен|superclass}}), а све класе изведене од ње су њена деца или поткласе ({{јез-ен|subclass}}). Деца наслеђују све родитељске атрибуте и методе, декларисане као јавне (public) или као заштићене (protected), неке од њих могу да се измене ({{јез-ен|overload}}) и такође, свако дете може да надогради класу родитеља, новим атрибутима и методама.<ref name="курсеви">[http://coursesweb.net/php-mysql/php-oop-inheritance-class-extends PHP OOP — Inheritance, class extends, Courses web: PHP OOP — Inheritance, class extends, приступ 2. новембар 2012]</ref> Специјално у случају да су неки метод или цела родитељска класа, декларисани као завршни или финални ({{јез-ен|[[#Кључне речи|final]]}}), они неће моћи да буду измењен у изведеној класи.<ref>[http://php.net/manual/sr/language.oop5.final.php PHP.net: Final Keyword, 20. август 2011, приступ 2. новембар 2012]</ref> Док свака класа родитељ може имати више изведених класа, свака изведена класа може имати само једног родитеља, односно, наслеђивање је једноструко. За разлику од других програмских језика<ref name="младен">{{Cite book|
Декларисање изведене класе врши се на основу родитељске класе уз помоћ кључне речи '''extends''',<ref name="курсеви" />
Ред 1.562:
class Родитељ {
function пример() {
echo "метода — пример у родитељској класи.
\n"; }
}
class Дете extends Родитељ {
function пример() {
echo "Измењена метода — пример.
\n"; parent::пример(); //позива истоимену родитељску методу
}
Линија 1.623 ⟶ 1.627:
</source>
Да би се утврдило да ли је неки објекат примерак одређене класе, користи се оператор '''instanceof''', који примењен над неким објектом у изразу,
<source lang="php">
Линија 1.957 ⟶ 1.961:
</div>
<div class="central-featured-lang lang1" lang="sr">
<a href="http://sr.wikipedia.org/" title = "Српски — Википедија — слободна енциклопедија"
style="margin-left: 115px;">
<strong>Српски</strong>
Линија 2.060 ⟶ 2.064:
== Доступност и лиценца ==
-{PHP}- се може бесплатно преузети широм Интернета и на званичном сајту -{PHP}--а, а лиценциран је [http://www.php.net/license/3_01.txt -{PHP}- лиценцом], која предвиђа:<ref>[http://www.php.net/downloads.php PHP.NET, "Downloads"]</ref><ref>{{cite web|url=http://www.php.net/license/3_01.txt |title = The PHP License, version 3.01|accessdate = 20.
{{quote
Линија 2.066 ⟶ 2.070:
}}
Ово ограничење употребе "PHP"-а чини лиценцу PHP неспојивом с [[GPL|Општом јавном лиценцом]], док Зенд лиценца није компатибилна због рекламне клаузуле сличне оној из оригиналне [[BSD licenca|
== Извори ==
Линија 2.073 ⟶ 2.077:
== Литература ==
{{refbegin|2}}
* {{Cite book | ref = harv |last=Trachtenberg|first=Adam|title = Upgrading to PHP 5|url=http://books.google.com/books?id=Yat0DYXpUj8C&pg=PA32|year=2004|publisher="O'Reilly Media, Inc."|isbn=978-0-596-00636-5}}
* {{Cite book | ref = harv |
* {{Cite book | ref = harv |last=Heurtel|first=Olivier|title = PHP 5.3: Desarrollar un sitio Web dinámico e interactivo|url=http://books.google.com/books?id=GcymrdA9lZoC&pg=PA147|year=2011|publisher=Ediciones ENI|isbn=978-2-7460-6666-3|pages=147}}
* {{Cite book | ref = harv |
* {{Cite book | ref = harv |last=MacIntyre|first=Peter|title = PHP: The Good Parts|url=http://books.google.com/books?id=THI24xC5CUwC&pg=PA120|year=2010|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-9074-7|pages=120-}}
* {{Cite book | ref = harv |last=Hudson|first=Paul|title = PHP in a Nutshell|url=http://books.google.com/books?id=dm2_jgULbBUC|year=2005|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-7912-4}}
* {{Cite book | ref = harv |last=Lurig|first=Mario|title = PHP Reference: Beginner to Intermediate PHP5|url=http://books.google.com/books?id=noi76uKOJ5wC|year=2008|publisher=Mario Lurig|isbn=978-1-4357-1590-5}}
* {{Cite book | ref = harv |last=Ullman|first=Larry|title = PHP for the Web: Visual QuickStart Guide|url=http://books.google.com/books?id=A_ivap-0XucC|year=2009|publisher=Peachpit Press|isbn=978-0-321-61744-6}}
* {{Cite book | ref = harv |
* {{Cite book | ref = harv |last=Cobo|first=Ángel|title = PHP y MySQL: Tecnología para el desarrollo de aplicaciones web.|url=http://books.google.com/books?id=zMK3GOMOpQ4C|year=2005|publisher=Ediciones Díaz de Santos|isbn=978-84-7978-706-6}}
* {{Cite book | ref = harv |
{{refend}}
=== Додатна литература ===
* {{cite journal |quote=What’s the Absolute Minimum I Must Know About PHP? |url= https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/ |title = What is Code? |
== Спољашње везе ==
|