Category Archives: PHP

Adauga folder in include_path

Probabil ca multi dintre voi ati descarcat librarii php. Dupa ce ati descarcat o librarie, extrageti fisierele intr-un dosar, ex: /mylib/nume_librarie. Doriti sa includeti un fisier din acest folder in proiectul vostru.

In mod normal daca ai nevoie de un fisier din acest dosar vei scrie ceva de genul:

Ei bine, dar pe serverul unde veti incarca siteul, libraria se afla intr-un alt folder, ex: /server/mylib/nume_librarie. In acest caz aplicatia va avea erori.

Solutie: Pentru a nu hardcode-a calea catre librarie, aveti posibilitatea de a adauga folderul librariei in php.ini :

include_path = ‘.:/usr/share/php:/usr/share/pear’

Modificati linia de mai sus in:

include_path = ‘.:/usr/share/php:/usr/share/pear:/mylib/nume_librarie’

Dupa ce ati salvat fisierul php.ini si ati repornit serverul HTTP, veti putea folosi in aplicatia voastra urmatorul cod:

Solutia 2:

Daca nu aveti acces la fisierul php.ini atunci puteti sa adaugati folderul la include_path la inceputul aplicatiei, ex:

Introducere in JSON si PHP

JSON ( JavaScript Object Notation ) este tot mai des folosit in lumea IT. Un fisier JSON se implementeaza foarte rapid, este folosit de tot mai multe servicii web. Pe scurt este foarte un mod rapid de a transporta date intre doua interfete.

1. Cum se genereaza un fisier json dintr-un array PHP ?

Se va afisa:
[“sandor”,”ion”,”elena”]

2. Cum se transform un fisier json in array PHP ?

Se va afisa:
array(3) { [0]=> string(6) “sandor” [1]=> string(3) “ion” [2]=> string(5) “elena” }

Conectare la baza de date MySQL prin PDO

PDO ( PHP Data Object ) este o interfata ce permite accesarea bazei de date. Pentru a beneficia de avantajele PDO este recomandat sa aveti instalat PHP 5.1+ .

Ex 1: Conectare la baza de date MySQL ( instalat local )

In acest exemplu ne vom conecta la baza de date locala MySQL, mai concret la baza de date cu numele “test”.

Ex 2: Selectarea datelor din baza de date MySQL, iar in caz de eroare afisam mesajele de eroare

query(‘SELECT * FROM user’) as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print “Error!: ” . $e->getMessage() . “
“;
die();
}
?>

In exemplul 2 ne vom conecta la baza de date “test” si vom afisa toti utilizatorii cu toate campurile , iar daca se intampina o eroare atunci se va afisa un mesaj de eroare ( de ex: nu exista tabela “user” )

Tranzactii cu PDO

Folosim tranzactii cand avem de rulat mai multe comenzi SQL si daca cel putin unul dintre SQL-uri nu s-a executat cu success atunci se va face rollback, adica se vor anula si SQL-urile executate cu success.

Ex: Inserare in baza de date folosind tranzactii:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();
$dbh->exec(“insert into user (id, name, phone) values (1, ‘Ion’, ‘0259941’)”);
$dbh->exec(“insert into user_age (id, age) values (1, 16)”);
$dbh->commit();

} catch (Exception $e) {
$dbh->rollBack();
echo “Failed: ” . $e->getMessage();
}
?>

Obs: Daca unul dintre SQL-uri de inserare nu se executa cu success se va face rollback.

Constante in PHP

Inca nu am scris despre constante in php,desi sunt utilizate des. Constantele sunt variabile a caror valoare nu se poate schimba, de aici denumirea de constanta.

Exemplu:

Dupa cum ai vazut in exemplul de mai sus, constanta se scrie fara semnul $, fata de alte variabile.

Exemplu2:

Php-ul ofera cateva constante “magice” (definite).

Exemplu3:

Trait in PHP 5.4

Atentie, acest tutorial este recomandat personelor avand cunostinte php medii .

Folosind trait este foarte usoara sa reutilizezi metode ce contin cod . Este un mecanism nou ce permite implementarea metodelor ce pot fi reutilizate in clase.

Un scurt exemplu pentru folosirea trait-ului.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
trait helloWorld {
    public function helloWorld() {
        echo 'Hello World!';
    }
}
 
class helloWorld {
    use helloWorld;
}
 
$o = new helloWorld();
$o->helloWorld();   // va afisa: Hello World!
 
?>

Metodele din trait poti suprascrie din clasa, pot sa intelegegi prin “trait” o “clasa de baza” .

Ex2: extindem method helloWorld() in clasa helloWorld

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
trait helloWorld {
    public function helloWorld() {
        echo 'Hello World!';
    }
}
 
class helloWorld {
    use helloWorld;
 
    public function helloWorld() {
        echo 'Party People!';
    }
}
 
$o = new helloWorld();
$o->helloWorld();   // va afisa: Party People
 
 
?>

Variabile statice

Nu-mi amintesc cand am folosit ultima oara variabile statice, posibil ca in liceu cand am avut teme de rezolvat.

Sa creeam o functie recursiva counter() avand variabila statica $count .

Introdu urmatorul cod intr-un fisier text cu numele counter.php

<?php
function counter()
{
static $count = 0;

$count++;
echo $count;
if ($count

Cand apelam fisierul counter.php se va afisa:

12345678910

Fara instructiunea “static” functia recursiva s-ar executa pana la sfarsitul lumii si browserul se va bloca (depinde de calculator).

Foarte important este faptul ca doar valori se pot asocia unei variabile statice, nu si expresii.

Exemple:

Operatori PHP – Exercitii

Saptamanal rezolv cate un test la php, si tot timpul apar intrebari noi. De exemplu am avut urmatoarele probleme de rezolvat:

Ce se va afisa?

1. print 4 << 5;
2. print 3 << 4;
3. print 7 <> 3;

Pentru a afla rezultatul trebuie sa stim ce face operatorul “<>”.

Operatorul “<<" inmulteste numarul aflat pe partea stanga cu 2 la puterea numarului pe partea dreapta .

Operatorul "<<" imparte numarul aflat pe partea stanga cu 2 la puterea numarului pe partea dreapta .

Rezolvare:

1. 4 * 2^5 = 4 * 32 = 128

2. 3 * 2^4 = 3 * 16 = 48

3. 7 * 2^3 = 7 * 8 = 56

4. 16 / 2^3 = 16 / 8 = 2

POO in PHP – Introducere

Voi incepe introducerea POO in PHP cu un mic exemplu. POO inseamna programare orientata pe obiecte. Pentru a lucra cu obiecte avem nevoie de clase. Clasele sunt alcatuite din proprietati si metode. O proprietate este o variabila, iar o metoda este o functie in interiorul clasei.

Ex: Implementare clasa Phone care are 3 proprietati: brand, model, price (pret).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
class Phone {
 
    protected $brand;
    protected $model;
    protected $price;
 
    public function __construct($_brand, $_model, $_price) {
        $this->brand = $_brand;
        $this->model = $_model;
        $this->price = $_price
  }
 
  // Metode get, 
  // aceste metode sunt folosite pentru a afisa o propietate
  public getBrand(){
    return $this->brand;
  }
 
  public getModel(){
    return $this->model;
  }
 
  public getPrice(){
    return $this->price;
  }
 
  // Metode set,
  // aceste metodae sunt folosite pentru a asigna o valoare pentru o proprietate.
 
  public setBrand($_brand){
    $this->brand = $_brand;
  }
 
  public setModel($_model){
    $this->model = $_model;
  }
 
  public setPrice($_price){
    $this->price = $_price;
  }
 
}
 
?>

Ex2: Cream un obiect de tip Phone.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
$my_phone = new Phone();
 
echo $my_phone->getBrand();
echo '<br />';
echo $my_phone->getModel();
echo '<br />';
echo $my_phone->getPrice();
echo '<br />';
 
 
//schimbam proprietatile obiectului
$my_phone->setBrand('Samsung');
$my_phone->setModel('Galaxy S2');
$my_phone->setPrice('300 euro');
 
 
 
//afisam din nou toate proprietatile. 
echo $my_phone->getBrand();
echo '<br />';
echo $my_phone->getModel();
echo '<br />';
echo $my_phone->getPrice();
echo '<br />';
 
?>

Sfaturi
=======================
1. implementarea clasei se salveaza intr-un fisier separat si se va include in fisierul php unde vom avea nevoie.
2. Afisearea proprietatilor se poate pune intr-o functie pentru a nu duplica codul.

PS: Urmeaza si partea a 2-a .

Bafta!

Cum se poate modifica fiecare element dintr-un array?

Probabil majoritatea dintre voi si-a dorit sa modifice fiecare element dintr-un array cu un singur “sut”.
De exemplu avem o lista cu utilizatori salvata intr-un array:

Ex: Se cere sa se transforme fiecare nume de utilizator in majuscule.

Varianta1 clasica, probabil asta se invata in liceu / facultate:

<?php

for ($i=0; $i

Varianta2, transformam folosind functia array_map();

Asa ca varianta2 pare mult mai simpla si eleganta. Recomand sa folositi functia array_map() pentru modificarea fiecarui element dintr-un array.

Pentru Functia array_map() am definit primii 2 parametri:
– “strtoupper” : functia ce voi apela
– $utilizatori : array-ul ce doresc sa modific.

Bafta!

7 exemple des folosite cu functia date()

Functia date() este folosita pentru a formata ora / data si are peste 30 de optiuni pentru formatare.

Voi arata exemple cu cele mai folosite formatari.

1. Afiseaza data curenta ZZ-LL-AAAA

<?php

echo date("d-m-Y");

2. Afiseaza ora curenta OO:MM:SS

<?php

echo date("H:i:s")

3. 1+2, adica afiseaza data si ora curenta:

<?php

echo date("d-m-Y H:i:s")

Obs: Dupa cum se vede in functia date se poate folosi un singur sau mai multi parametrii. Ordinea nu conteaza, iar separatoarele "-", ":" se pot inlocui cu altele.

4. Afiseaza ziua din luna curenta cu 2 cifre:

<?php

echo date("d"); //va afisa valori intre 01..31

5. Afiseaza luna din anul curent cu 2 cifre:

<?php

echo date("m");

6. Afiseaza toate informatiile legate de data si ora in format ISO 8601.

<?php

echo date("c");

Obs: Acest format ISO 8601 este folosit in javascript , si cand dorim sa trimitem un parametru de tip data / ora atunci alegem acest format.

7. Afiseaza numele zilei curente (in engleza):

<?php

echo date("N"); // va afisa una dintre variante: Monday… Sunday