You are on page 1of 61

PHP

MIRJANA KOCALEVA
Што е PHP

 PHP е вгнезден скриптен јазик за веб програмирање


 Базиран на Zend машина
 Првенствено се користи за развој на динамични HTML содржини
 Но, може да се користи и за да генерира XML документи (покрај другите).
Што е PHP

 Извршувањето на PHP кодот е на серверската страна и излезот од извршувањето се


праќа на пребарувачот така што се прикажува на HTML страницата.
Поставување на сервер за развој

 WAMP - Windows, Apache, MySQL, and PHP


 XAMPP
 USBWebserver

 Ќе користиме USBWebserver на вежби

 Programmer Editor
 NotePad, NotePad++, CodeIgniter
PHP блок

 Тагови кои се валиден начин за да се започне и заврши блок со PHP код се:
 <% %>
 <? ?>
 <?= ?>
 <?php ?>
променливи

 Името на променливата започнува со знакот за долар ($) по кој следува буква или
долна црта, па следува број или буква, броеви или долни црти
 Валидни погрешни
 $abc = 12; abc = 12;
 $total = 0; $2php = 0;
 $largest_so_far = 0; $bad-punc = 0;
 &_4abc=0;
Изрази

 нормални како и кај другите јазици (+ - / *)


 <?php
 $x = "15" + 27;
 echo($x);
 ?>

 Излез 42
Излез

 echo е јазична конструкција - може да се третира како функција со еден параметар. Без
загради и прифаќа повеќе параметри.
 print е функција со само една параметар, но опционално може да има и загради, па така
може да изгледа како јазична конструкција (може да се користи како дел од израз)

 <?php
 $x = "15" + 27;
 echo $x;
 echo("\n"); или echo "<br>"; и php скриптата ќе ја сместиме во html
 echo $x, "\n";
 print $x;
 print "\n";
 print($x);
 print("\n");
 ?>
Услов If (во големи загради { })

 Логички оператори( == != < > <= >= and or ! ) (еднакво, различно, помало, поголемо,
помало или еднакво, поголемо или еднакво, и, или , негација)
 <?php
 $ans = 42;
 if ( $ans == 42 ) {
 print "Hello world!\n";
 } else {
 print "Wrong answer\n";
 }
Низи

 <?php
 $stuff = array("Hi", “2");
 echo $stuff[1], "\n";
 ?>
 Излез 2

 - кај низата започнуваме со броење на членовите од 0


 <?php
 $stuff = Array();
 $stuff[] = "Hello";
 $stuff[] = “Hi";
 echo $stuff[0], "\n";
 ?>
 Излез Hello
 <?php
 $stuff = Array();
 $stuff[] = "Hello";
 $stuff[] = "Hi";
 echo $stuff[2], "\n";
 ?>
 Излез Undefined offset: 2
 <?php
 $stuff = Array();
 $stuff[2] = "Hello";
 $stuff[9] = "dog";
 $stuff[9] = "cat";
 echo $stuff[9], "\n";
 ?>

 Излез cat
 <?php
 $stuff = array("name" => "kire",
 "course" => "IF2016");
 echo $stuff["course"], "\n";
 ?>

 Излез IF2016
Приказ на цела низа

 функцијата print_r() ја прикажува целата PHP структура на низата – корисна е за дебагирање


(пронаоѓање на грешки)
 <?php$stuff = array("ime" => "toni",
 "indeks" => "I6640");
 print_r($stuff);
 ?>
 Излез
 Array
 (
 [ime] => toni
 [indeks] => 16640
 )
 <?php
 $stuff = Array();
 $stuff[2] = “eden";
 $stuff[9] = “dva";
 print_r($stuff);
 ?>

 Излез
 Array ( [2] => eden [9] => dva )
var_dump .vs. print_r

 <?php
 $stuff = array("predmet" => "Internet_Programiranje",
 "br_studenti" => "70");
 var_dump($stuff);
 ?>
 Излез
 array(2) {
 ["predmet"]=> string(22) "Internet_Programiranje"
 ["br_studenti"]=> string(2) "70"
 }
var_dump()

 var_dump() дава поопширен приказ на информациите од print_r


 var_dump() функцијата се користи за прикажување на структурирани информации
(тип и вредност) за една или повеќе променливи.
 <?php  
 Излез :
 $var_name1=678;  
 $var_name2="a678";    int(678) 
 $var_name3="678";   string(4) "a678"
 $var_name4="W3resource.com";   string(3) "678"
 $var_name5=698.99;  
string(14) "W3resource.com"
float(698.99) 
 $var_name6=+125689.66;            
float(125689.66)
 echo var_dump($var_name1)."<br>";  
 echo var_dump($var_name2)."<br>";  
 echo var_dump($var_name3)."<br>";  
 echo var_dump($var_name4)."<br>";  
 echo var_dump($var_name5)."<br>";  
 echo var_dump($var_name6)."<br>";  
 ?>    
 <?php
 $thing = FALSE;
 echo("One\n");
 print_r($thing);
 echo("Two\n");
 var_dump($thing);
 ?>

 Излез
 One Two bool (false)
Јамки во низа

 <?php
 $stuff = array("name" => "Chuck", "course" => "SI664");
 foreach($stuff as $k => $v ) {
 echo "Key=",$k," Val=",$v,"\n";
 }
 ?>

 Излез
 Key=name Val=Chuck Key=course Val=SI664
 $x = 5;
 $y = Array("x" => "Hello");
 print $y[x];

 Излез
 Hello, но х е недефинирана константа

 $x = 2;
 $y = x + 5;
 print $y;
 Исто и во овај случај, излез 5, но х е недефинирана константа
Стрингови

 Стрингот користи единични или двојни наводници


 Левата коса црта (backslash (\)) се користи за оставање на празно место
 Стрингот може да е во повеќе линии (редови)
 <?php
 echo 'this is a simple string';
 echo 'You can also have embedded newlines in
 strings this way as it is
 okay to do';
 // Outputs: Arnold once said: "I'll be back"
 echo 'Arnold once said: "I\'ll be back"';
 // Outputs: This will not expand: \n a newline
 echo 'This will not expand: \n a newline';
 // Outputs: Variables do not $expand $either
 echo 'Variables do not $expand $either';
 ?>
 Излез
 Hello this is a simple stringYou can also have embedded newlines in strings this way as it is okay to doArnold once said:
"I'll be back"This will not expand: \n a newlineVariables do not $expand $either
 <br/> - за нова линија
 <?php
 echo " this is a simple string ";
 echo " You can also have embedded newlines in
 strings this way as it is
 okay to do ";
 // Outputs: This will expand:
 // a newline
 echo " This will expand: <br/> a newline ";
 // Outputs: Variables do 12
 $expand = 12;
 echo " Variables do $expand ";
 ?>
 Излез
 this is a simple string You can also have embedded newlines in strings this way as it is okay to do This will expand:
a newline Variables do 12
Коментари (//, /* */, #)

 <?php
 echo ' This is a test '; // This is a c++ style comment
 /* This is a multi line comment
 yet another line of comment */
 echo ' This is yet another test ';
 echo 'One Final Test '; # This is a shell-style comment
 ?>
Променливи

 3 вида:
 Local (локални)
 Global (глобални)
 Static (статични)
Локална променлива

 <?
 $x = 4;
 function assignx ()
 {
 $x = 0;
 print "\$x inside function is $x. ";
 }
 assignx();
 print "\$x outside of function is $x. ";
 ?>

 Резултати
 $x inside function is 0.
 $x outside of function is 4.
Глобална променлива

 <?
 $somevar = 15;
 function addit()
 {
 GLOBAL $somevar;
 $somevar++;
 print "Somevar is $somevar";
 }
 addit();
 ?>

 Резултат : Somevar is 16
Статична променлива

 <?
 function keep_track()
 {
 STATIC $count = 0;
 $count++;
 print $count;
 print ””;
 }
 keep_track();
 keep_track();
 keep_track();
 ?>

 Резултат : 1 2 3
Што ќе се прикаже откако ќе се изврши
следнава скрипта?

 <?php
 define(myvalue, "10");
  
 $myarray[10] = "Dog";
 $myarray[] = "Human";  
 $myarray['myvalue'] = "Cat";  
 $myarray["Dog"] = "Cat";
  
 print "The value is: ";
 print $myarray[myvalue]."\n";
 ?>

 Точен одговор: The value is: Dog


Појаснување на задачата од претходниот
слајд

 Ако имаме print $myarray[myvalue]; на излез ќе имаме Dog бидејќи myvalue


пристапува до клучот кој се состои од константата myvalue

 А доколку имаме $myarray[’myvalue’]; на излез ќе имаме Cat бидејќи се пристапува


до клучот во функцијата кој е стринг
Што е излезот од следнава скрипта?

 <?php
 $a = 10;
 $b = 20;
 $c = 4;
 $d = 8;
 $e = 1.0;
 $f = $c + $d * 2;
 $g = $f % 20;
 $h = $b - $a + $c + 2;
 $i = $h << $c;
 $j = $i * $e;
 print $j;
 ?>
Пресметки за задачата од претходниот
слајд

 $f = $c + $d * 2 = 4+8*2=20
 $g = $f % 20=20%20=1 и остаток 0
 $h = $b - $a + $c + 2=20-10+4+2=16
 $i = $h << $c=16<<4 = x*2^y = 16*2^4=16*16=256
 $j = $i * $e=256*1.0=256

 Шифтирање на лево x<<y = x*2^y


 Шифтирање на десно x>>y = x/2^y
Целобројна променлива $a може да се
мултиплицира (да се множи) со 4 со употреба
на следниве искази


$a *= pow (2, 2) => $a*2^2 = $a*4
 $a <<= 2 => $a*2^2 = $a*4

 pow = на квадрат
 <<= шифтирање на лево
Кои вредности треба да им бидат доделени на променливите $
a, $ b и $ c со цел следнава скрипта да го прикаже стрингот
Hello, World!?

 <?php
 $string = "Hello, World!";
 $a = ?;
 $b = ?;
 $c = ?;
 if($a) {
 if($b && !$c) {
 echo "Goodbye Cruel World!";
} else if(!$b && !$c) {
 echo "Nothing here";
}
 } else {
 if(!$b){
 if(!$a && (!$b && $c)) {
 echo "Hello, World!";
 } else {
 echo "Goodbye World!";
 }
 } else {
 echo "Not quite.";
 }}
 ?>
 Точен одговор: False, False, True
Логички оператори

 !$a – негација, враќа вистина ако $a е невистинита и обратно


 && - и, е вистина ако и $a и $b се вистина
 ||- или, враќа вистина ако $a или $b се вистина
 Xor (Exclusive-or)- враќа вистина ако $a или $b се вистина, но не и
двете
 = = = (Операторот за идентитет) - споредува две вредности и враќа
вистина (true), само ако и двете вредности се од ист тип и имаат иста
вредност.
 Пример int $a=5; float $b=5.0; имаат иста вредност но не се од ист тип
 Нека $a = 6.0; $b = 6;
 Што е резултатот на секое следно? Што се подразбира? Зошто се различни?
 $a = $b
 $a == $b
 $a === $b

 $a = $b
 Се доделува вредноста $b на $a (кои се TRUE)
 $a == $b
 Компарација на вредноста на $a и $b и враќаат TRUE
 $a === $b
 Компарација на двете вредности и типовите на $a и $b и враќа FALSE
оператори

 Increment / Decrement ( ++ -- )
 Конкатенација на стрингови( . )
 еднаквост( == != )
 Троен оператор( ? : )
Increment / Decrement

 $x = 5;
 $y = 15 + $x++;
 echo "x is $x and y is $y \n";

 x is 6 and y is 20
Конкатенација

 $a = ‘Здраво' . ‘на‘.’сите’;
 echo $a . "\n";

 Здраво на сите
Еднаквост – ги претвора податоците при
самиот процес на споредба

 if ( 123 == "123" ) print ("1")."<br>";


 if ( 33 == "10"+23 ) print ("да")."<br>";
 if ( FALSE == "0" ) print ("точно")."<br>";
 if ( (5 < 6) == '2'-'1' ) print ("еднакво")."<br>";

 1
да
точно
еднакво
Троен оператор

 <?php
 $grade=78;
 print($grade>50 ? "Passed" : "Failed");
 ?>

 Passed
Кој е излезот од следнава скрипта?

 <?php
 $array = '0123456789ABCDEFG';
 $s = '';
 for ($i = 1; $i < 50; $i++) {
 $s .= $array[rand(0,strlen ($array) - 1)];
 }
 echo $s;
 ?>
 Точен одговор: Низа од 49 случајни карактери
 Функцијата rand зема променливи по случаен избор
 Функцијата strlen враќа должина на низата
Следнава серија од if услови (1) може најдобро да се
претстави со switch конструктор кој користи default
(стандарден ) случај (2)

 (1)
 <?php
 if($a == 'a') {
 somefunction();
 } else if ($a == 'b') {
 anotherfunction();
 } else if ($a == 'c') {
 dosomething();
 } else {
 donothing();
 }
 ?>
switch конструктор кој користи default
(стандарден ) случај
 (2)
 <?php
 switch($a) {
case 'a':
somefunction();
break;
case 'b':
anotherfunction();
break;
case 'c':
dosomething();
break;
default:
donothing(); }
 ?>
Под претпоставка дека сакаме да ја промениме вредноста на
секој елемент на $myarray низата со иста вредност

 <?php
 $myarray = array ("My String", "Another String", "Hi, Mom!");
 print_r ($myarray);
 ?>
  
 ќе користеме for циклус (на пример следниов циклус)
 <?php
 $myarray = array ("My String", "Another String", "Hi, Mom!");
 for($i = 0; $i < count($myarray); $i++)
 {
 $myarray[$i] = " novo ";
 }
 print_r($myarray);
 ?>
 

 А ако сакаме да ја промениме секоја вредност со нова различна тогаш ќе го


користиме овој начин
 <?php
 $myarray = array ("My String", "Another String", "Hi, Mom!");
 $myarray[0] = "eden";
 $myarray[1] = "dva";
 $myarray[2] = "tri";
 print_r($myarray);
 ?>
Разгледајте го следниов дел од кодот:

 <?php
 define("STOP_AT", 1024);
 $result= array();
 for($idx = 1; $idx < STOP_AT; $idx *= 2)
 {
 $result[] = $idx;
 }
 print_r($result);
 ?>

 Што ќе даде следнава низа на излез?


 Решение: Array { [0] => 1 [1] => 2 [2] => 4 [3] => 8 [4] => 16 [5] => 32 [6] => 64 [7] => 128 [8] => 256 [9]
=> 512 }
Во овој пример е прикажана декларација на функцијата
is_leap (). Оваа функција (is_leap) ја користи 2000 година како
стандардна вредност.

 <?php
 function is_leap($year = 2000)
 {
 $is_leap = (!($year %4) && (($year % 100) || !($year % 400)));
 return $is_leap;
 }
 var_dump(is_leap(1987)); /* Displays false */
 var_dump(is_leap()); /* Displays true */
 ?>
 На излез ќе врати bool(false) bool(true)
Која вредност ќе се прикаже откако ќе се изврши следново?
Претпоставуваме дека кодот е извршен со користење на
следнава URL адреса:
 testscript.php?c=25
 <?php
 function process($c, $d = 25)
 {
 global $e;
 $retval = $c + $d - $_GET['c'] - $e;
 return $retval;
 }
 $e = 10;
 echo process(5);
 ?>
  
 Точен одговор: -5 (затоа што вредноста на $c е дефинирана во echo process(5) и изнесува 5, вредноста на
$d = 25, со $_GET['c'] ја земаме вредноста на с од УРЛ-то и за е имаме 10 т.е. $retval =5+25-25-10=-5)
GET метод

 GET методот испраќа кодирани информации за корисникот во прилог на барањето за


страната. Името на веб страната и кодираните информации се одвоени со ? карактер.
 http://www.test.com/index.htm?name1=value1&name2=value2
 GET методот креира долга низа, која се појавува во нашиот сервер, во локацијата: box на
прелистувачот.
 Ограничен е да испраќа до 1024 карактери
 Не треба да се користи кога имаме лозинка или други тајни информации кој се испраќаат
на сервер
 GET не може да се користи за да се испратат бинарни содржини, како слики или word
документи, до серверот
 До податоците испратени со GET методот може да се пристапи со употреба на
QUERY_STRING променлива
 PHP обезбедува $ _GET асоцијативна низа за пристап до сите испратени информации со
користење на GET методот.
POST метод

 POST методот пренесува информации преку HTTP ("Hypertext Transfer Protocol")


заглавија. Информациите се кодирани како што е опишано во случај на GET
методот и ставени во насловот (заглавјето) наречен QUERY_STRING.
 POST методот нема ограничување на големината на податоците кои треба да бидат
испратени.
 POST методот може да се користи за испраќање на ASCII како и на бинарни
податоци.
 Податоците пратени со POST методот одат преку HTTP заглавието така што
безбедноста зависи од HTTP протоколот. Со користење на безбеден HTTP можеме
да бидеме сигурни дека нашите информации се безбедни.
 PHP обезбедува $ _POST асоцијативна низа за пристап до сите испратени
информации со користење на POST методот.
Дефинирање на функција

 <?php
function familyName($fname) {
   echo "$fname Jons.<br>";
}
familyName("Jani");
familyName("Kim");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
 Резултат
 Jani Jons.
Kim Jons.
Stale Jons.
Kai Jim Jons.
Borge Jons.
Дефинирање на функција

 По дифолт, аргументите во функцијата се дефинирани по вредност (така што, ако вредноста на


аргументот во рамките на функцијата се менува, таа не се променува и надвор од функција). За да се
овозможи функцијата да ги менувате своите аргументи, тие мора да се дефинирани по референцата.
 Кога дефинираме функција, кога параметарот е деклариран по референца (со симболот ampersand
(&) пред името на аргументот), е невозможно да се додели стандардна (default) вредност на самиот
параметар.
 <?php
function foo(&$var)
{
    $var++;
}
$a=5;
foo($a);
// $a is 6 here
?>
Ја разгледуваме следнава скрипта:
целта е да се прикаже Hello, World! стрингот, кога се извршува
истата

 <?php
 function myfunction($a, $b = true)
 {
 if($a && !$b) {
 echo "Hello, World!\n";
 }}
 $s = array(0 => "my", 1 => "call", 2 => '$function', 3 => ' ', 4 => "function", 5 => '$a', 6 => '$b',
 7 => 'a', 8 => 'b', 9 => '');
 $a = true;
 $b = false;
 /* Group A */
 $name = $s[x].$s[x].$s[x].$s[x].$s[x].$s[x];
 /* Group B */
 $name(${$s[x]}, ${$s[x]});
 ?>
Ја разгледуваме следнава скрипта:
целта е да се прикаже Hello, World! стрингот, кога се извршува
истата

 Со цел да се прикаже Hello, World! стрингот, кога се извршува,


индексите во група A се 0,4,9,9,9,9, а во група B се 7,8.
 Run-time inclusion (времето на вклучување) на PHP скриптата се
врши со користење на include_once, include require_once и require
конструкторите, исто така и compile-time inclusion (времето на
компајлирање) на PHP скриптите се врши со користење на
истите конструктори.
 Со повикување на exit() функцијата скриптата доаѓа до т.н. чисто
завршување (clean termination).
Почетни примери

<html>
<head>
<title>First PHP program</title>
</head>
<body><p>
<?php
echo "Hello world!";
?>
</p></body>
</html>
Почетни примери

 <html>
 <?php
 echo "Hello World. Today is ".date("l").". ";
 ?>
 How are you?
 </html>

 Овој код по извршувањето на излез дава


 Hello World. Today is Tuesday. How are you?
 http://php.net/manual/en/function.date.php
Почетни примери
<html>
<head>
<title>Second PHP program</title>
</head>
<body>
<?php
echo "<h1>Times</h1>";
echo "<p>The time here is ";
echo date("g:i a");
?>
</p></body>
</html>

 Times
 The time here is 12:33 pm

You might also like