Organizarea și structura PHP [631749]
Organizarea și structura PHP
M.Marian
Invocarea parser -ului PHP
•implică utilizarea etichetelor specifice PHP
•<?php … ?>
–sau alternativa <? … ?> ( acceptată , însă
descurajată în utilizare )
•utilizare flexibilă a etichetelor
–pentru un fișier întreg
–pentru porțiuni de PHP în interiorul codului HTML
•fiecare programator web are însă propriul stil
și mod de abordare a problemei
Fișiere PHP
•au extensia .php
•dacă aveți doar cod PHP într-un fișier , eticheta
de final – ?> – poate fi omisă
–acest lucru garantează faptul că nu veți avea spații
libere (blanks/whitespace) în exces
•resurse electronice utile la http:// lpmj.net
Comentariile
•de două tipuri :
–comentarii pe o singură linie : folosind //
–comentarii multi -linie folosind /* … */
•acestea sunt folosite de programatorii web pentru
comentarea temporară a unor bucăți întregi de cod
•atenție însă să nu încorporați în comentariul temporar ,
alte comentarii deja existente în cod!
Sintaxa de bază
•PHP este un limbaj
–simplu (deviat din C și Perl; foarte similar cu Java)
–flexibil
–foarte puține reguli relative la sintaxă și structură
–poate fi scris / spațiat (indentat ) oricum
•două simboluri de reținut :
–; este folosit pentru a încheia o comandă PHP
•eroare frecventă : omiterea unui ;
–$ este prefixul oricărui simbol / nume de variabilă
•interpretorul PHP devine mai rapid atunci când recunoaște
numele de variabile
Variabile în PHP
•variabilele în PHP sunt simple recipiente pt.:
–șiruri de caractere (string -uri)
–valori numerice
–tablouri de elemente
•unidimensionale
•bidimensionale
•variabilele PHP pot stoca diferite tipuri de date
•diferite tipuri de date pot face diferite lucruri
Numele de variabile
•câteva reguli de reținut :
1.prefixul folosit este simbolul $
2.numele propriu -zis trebuie să înceapă cu o literă
sau cu simbolul liniuță -jos (_)
3.caracterele permise sunt cele alfanumerice (A –
Z, a – z, 0 – 9) plus liniuță -jos (_)
4.numele de variabile sunt sensibile la mărimea
caracterelor alfabetice
•$User_name este diferit de $ user_name
Tipurile de date din PHP
•variabilele PHP pot stoca diferite tipuri de date
–șir de caractere
–întreg
–float ( numere în virgulă mobilă – a.k.a. double)
–boolean
–tablou
–obiect
–NULL
–resource
•funcția var_dump ($x) returnează tipul de date și
valoarea variabilei $x
Variabile șir de caractere
•este o secvență de caractere (nu doar
alfanumerice )
–aflată între ghilimele simple ( apostrof ) sau duble
–de ex. "Hello world" sau 'Hello friends of PHP'
–există o diferență subtilă între cele două forme
Demo #1
<?php // test1.php
$username = "Fred Smith";
echo $ username ;
echo "< br>";
$current_user = $username;
echo $ current_user ;
?>
Variabile numerice întregi
•un întreg în PHP este orice valoare în intervalul –
2.147.483.648 și 2.147.483.647
•câteva reguli legate de întregi :
1.trebuie să aibă cel puțin o cifră
2.nu trebuie să conțină simbolul . (virgula zecimală )
3.poate fi o valoare pozitivă sau negativă
4.pot fi specificate în trei baze numerice :
• zecimal ,
• hexazecimal (folosind prefixul 0x), sau
• octal ( folosind prefixul 0)
Variabile numerice reale
•sintaxa este similară cu cea de la întregi
•un număr în virgulă mobilă sau
•un număr în formă (științifică ) normală
–50 × 106 va fi scris ca 50E6
–3 × 10-6 poate fi scris ca 3E-6
Demo #2
<?php
$x = 51;
var_dump($x);
$x = 11.35;
var_dump($x);
?>
Variabile de tip boolean
•două valori booleene
–TRUE
–FALSE
–de ex. $x = true; sau $x = false;
Valori de tip tablou
•în jargon sunt cunoscute ca "vectori "
•o variabilă tablou stochează mai multe valori
într-o singură variabilă
•definiția var. folosește funcția array()
•indexul elementelor din tablou începe cu zero
•tablourile cele mai folosite :
–unidimensionale
–bidimensionale
Demo #3
<?php
$oxo = array (
array ('x', ' ', 'o'),
array ('o', 'o', 'x'),
array ('x', 'o', ' ')
);
echo $ oxo[1][2] ;
$team = array("Athos ", "Porthos ", "Aramis ");
var_dump ($team );
?>
Variabile de tip obiect
•o clasă este un tip de date care stochează
–date și
–informații despre cum sunt prelucrate datele
•în PHP un obiect trebuie să fie declarat în mod
explicit
–pentru aceasta trebuie să avem mai întâi definiția
clasei din care face parte obiectul
Demo #4
<?php
class Car {
function Car() {
$this ->model = "VW";
}
}
// creare obiect
$herbie = new Car();
// afișare proprietăți obiect
echo $ herbie ->model;
?>
Valoarea NULL
•NULL este un tip special de date
–are o singură valoare : NULL
–o variabilă de tip NULL este o variabilă care nu are
nicio valoare asignată
•dacă o variabilă este creată fără o valoare ,
interpretorul PHP îi alocă în mod automat
NULL
•variabilele pot fi " golite " când primesc NULL
Demo #5
<?php
$x = "Hello world!";
$x = null;
var_dump ($x);
?>
Operatori
•PHP are 4 categorii de operatori :
–aritmetici +, -, *, /, %, ++, –
–de atribuire =, +=, -=, *=, /=, .=, %=
–de comparare ==, !=, >, <, >=, <=
–logici &&, and, ||, or, !, xor
•and și or au precedență scăzută (între operatori )
–plus operatorul ternar
•condiție ? adevărat : fals
•print ( 1 == 2 ? 'egal' : 'inegal ' );
Operații specifice #1
•asignarea variabilelor
–variabilă = valoare ;
–variabilă = variabilă ;
–sau de ex. $x += 11;
•incrementarea /decrementarea – prefix/ sufix
–if (++$x == 10) echo $x;
–if ($y – == 0) echo $y;
•concatenarea de string -uri
Operații specifice #2
•două tipuri de string în PHP
–string literal – folosind apostrofuri
•$text = ' Prefixul variabilelor este $, de ex. $ var';
–string cu substituție de variabile – folosind ghilimele
•$text = " Avem $temp grade Celsius astăzi !";
•evadare semantică a unor caractere folosind \
–$text = 'My kid \'s bike is a Gazelle';
–$text = "Temp Fahr \tTemp Celsius";
–$text = "My mother always said \"Don't waste your
time! \"";
Operații specifice #3
•comenzi multi -linie
–atunci când este nevoie de afișare unui text și
utilizarea mai multor echo/print poate fi încurcată
–operatorul here -document/ heredoc sau <<<
•<<<_END … END;
•păstrează spațierea și formatarea textului în cf. cu
intenția programatorului
•afișează tot ceea ce se găsește între cele două END ca și
când ar fi vorba de un string cu substituție de variabile
•nu e nevoie de evadarea caracterelor prin \
Demo #6
<?php
$author = "Bill Gates";
$text = "Measuring programming progress by lines
of code is like
Measuring aircraft building progress by weight.
– $author." ;
?>
Demo #7
<?php
$author = "Brian W. Kernighan";
echo <<<_END
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
– $author.
_END;
?>
Tipizarea variabilelor
•PHP este un limbaj cu tipizare superficială a
variabilelor
–variabilele nu trebuie să fie declarate înainte de
utilizare
–interpretorul PHP convertește întotdeauna
variabila la tipul cerut de context
•în momentul accesării acesteia
•în practică , programatorii nu se preocupă de
tipul de date al variabilei
Demo #8
<?php
$number = 12345 * 67890 ; //acesta e un întreg
echo substr ($number, 3, 1) ; //afișează un string
$pi = "3.1415927" ; //acesta e un string
$radius = 5;
echo $pi * ($ radius * $radius );
?>
Constante
•sunt similare variabilelor
–nu sunt prefixate de simbolul $
–o dată definite, valoarea lor rămâne constantă
pentru restul programului și nu poate fi alterată
•bună practică : folosirea majusculelor
define ("PUBLIC_ROOT", "/ var/www/");
$directory = PUBLIC_ROOT;
Constante predefinite
•PHP vine cu o sumă de constante predefinite
•constantele magice sunt un subset al acestora
–__LINE__ nr. liniei curente din fișier
–__FILE__ numele fișierului (incl. cale completă )
–__DIR__ numele directorului care conține fișierul
–__FUNCTION__ numele funcției
–__CLASS__ numele clasei
–__METHOD__ numele metodei
–__NAMESPACE__ numele spațiului de nume curent
•echo " Linia : " . __LINE__ . " din fișierul : " .
__FILE__;
echo vs. print
•cele două comenzi sunt similare ca scop
–print este o funcție care primește un parametru
–echo este un construct al PHP , nu o funcție
–echo este o idee mai rapid decât print() în afișarea
de text
•parte pentru că nu trebuie să returneze nicio valoare
–print poate fi folosit în mod fiabil în expresii
complexe tocmai pt. că este o funcție
–începeți cu echo, dar în producție folosiți print!
Funcții
•funcțiile sunt folosite pentru a separa secțiuni
de cod care îndeplinesc sarcini diferite
•utile pentru :
–sarcini repetitive
–evitarea scrierii de programe masive sau complexe
•de ex. afișarea timpului
–format diferit
–flexibilitate la modificare / actualizare / evoluție
Demo #9
<?php
function longdate ($timestamp ) {
return date("l F jS Y", $timestamp);
}
$ now = time();
echo longdate ($now);
?>
Orizontul de vizibilitate al variabilelor
•în contextul funcțiilor / programelor vorbim
despre variabile :
–locale – specifice /accesibile doar unei funcții
–globale – accesibile întregului program
–statice – variabile ale căror valori sunt păstrate de
la un apel la altul
–superglobale – variabile predefinite în PHP ,
specifice acestuia , accesibile de oriunde
Variabile locale
•sunt variabile temporare care stochează rezultate
parțiale (disponibile înainte de returul din
funcție )
–setul de parametri ai unei funcții
–variabilele locale declarate în codul funcției
•eroare frecventă : uitarea /ignorarea orizontului de
aplicare al unei variabile
–variabilele create într-o funcție sunt locale acesteia
–variabilele create în afara unei funcții pot fi accesate
doar de codul din afara funcției
Demo #10
<?php
function longdate ($timestamp ) {
$temp = date("l F jS Y", $timestamp);
return "The date is $temp";
}
?>
<?php
$temp = "The date is ";
echo longdate (time());
function longdate ($timestamp ) {
return $temp . date("l F jS Y", $timestamp) ; //$temp nu a fost definită local !!!
}
?>
Variabile globale
•accesibile oriunde din program
•declararea lor presupune utilizarea cuvântului
cheie global
global $ is_authenticated ;
•bună practică : utilizarea cu măsură a
variabilelor globale
–debuggare anevoioasă
–gestiunea numelor de variabile
Variabile statice
•variabilele locale își pierd valoarea la ieșirea din
funcție
–primesc alte valori inițiale /parțiale de la un apel la
altul al funcției
•variabilele statice suplinesc nevoia de a prezerva
valoarea unei variabile între apeluri succesive ale
funcției / programului
•sunt declarate cu cuvântul cheie static
•static $count;
•unei variabile statice nu îi poate fi asignat
rezultatul unei expresii
Demo #11
<?php
function test( ) {
static $count = 0;
echo $count;
$count++;
}
?>
Variabile superglobale
•începând cu PHP 4.1.0 sunt disponibile câteva
variabile predefinite
–furnizează informații utile despre mediul curent de
execuție al programelor PHP
–sunt structurate ca tablouri asociative
–numele lor conțin $, _ și majuscule
Variabile superglobale – exemple
•$GLOBALS – toate variabilele globale
•$_SERVER – anteturi , căi și locații pt. script
•$_GET – var./val. transmise via HTTP GET
•$_POST – var./val. transmise via HTTP POST
•$_FILES – elem. încărcate via HTTP POST
•$_COOKIE – var. transmise via cookie -uri HTTP
•$_SESSION – var. de sesiune disponibile
•$_REQUEST – conținut info. transmis de la navigatorul
web ( adică $_GET, $_POST, $_COOKIE)
•$_ENV – var. transmise prin metodele mediului
Variabilele superglobale și securitatea
•acestea sunt evaluate și exploatate de hackeri
–scopul este accesul în site-ul web, server și SGBD
–sunt încărcate cu cod malițios (comenzi Unix sau
MySQL)
•bună practică : însănătoșiți aceste variabile
înainte de a le folosi
–de ex. folosiți funcția htmlentities ()
–$came_from = htmlentities ($_SERVER['HTTP –
REFERER']);
Referințe
•Robin Nixon, "Learning PHP , MySQL and
JavaScript"
•Luke Welling, Laura Thomson, "PHP and
MySQL Web Development„
•Demo -urile sunt preluate din http://lpmj.net
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Organizarea și structura PHP [631749] (ID: 631749)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
