Curs Php-mysql

1. Constante

Pe langa proprietati (variabile) si metode (functii), in corpul clasei pot fi definite si constante, prin cuvantul const. Sintaxa generala este:
                const NUME_CONSTANTA;
- Diferenta principala dintre constante si proprietati e faptul ca valoarea constantei ramane aceeasi, nu mai poate fi modificata.
- La constante nu se foloseste atribut (public, private, protected), doar cuvantul const, ele sunt recunoscute ca publice.
- Constantele se acceseaza prin numele clasei si operatorul doua-puncte (::) (atat in interiorul clasei cat si in script unde e creata instanta), cu formula:
                Nume_Clasa::NUME_CONSTANTA

Pentru a se distinge mai clar proprietatile de constante, se obisnueste ca numele constantelor sa fie scris cu majuscule.


Iata un exemplu de clasa cu o constanta, si cum poate fi aceasta utilizata. Clasa Test de mai jos contine o proprietate "raza", o constanta "PI", metoda constructor si o metoda "getArea()".
<?php
// Clasa Test
class Test {
  public $raza;          // Proprietate
  const PI = 3.14;       // Constanta

  // Constructor
  public function __construct($raza) {
    // Daca $raza e un numar, atribuie valoarea la proprietatea "raza"
    // Altfel, seteaza un mesaj de eroare
    if(is_numeric($raza)) $this->raza = $raza;
    else throw new Exception('Valoare incorecta pt. raza');
  }

  // Returneaza aria cercului
  public function getArea() {
    return Test::PI * pow($this->raza, 2);
  }
}
?>
- Metoda constructor verifica daca argumentul adaugat la crearea instantei este de tip numar, in caz Adevarat, atribuie acea valoare la proprietatea "raza". Altfel, returneaza eroarea definita in Exception().
- Metoda getArea() returneaza aria cercului (formula matematica este PI*Raza2).
- Pentru a testa aceasta clasa si modul de accesare a constantei, folosim urmatorul script.
<?php
echo Test::PI;        // Afiseaza valoarea constantei PI din clasa Test

// Creare Instanta la clasa Test
$objTest = new Test(78);

// Afiseaza aria cercului cu raza 78, returnata de metoda getArea()
echo '<br /> Aria = '. $objTest->getArea();
?>
- Observati cum e accesata constanta "PI", cu aceeasi formula in interiorul clasei si in script, inainte de a crea instanta la clasa. Astfel, constantele pot fi accesate si fara a crea o instanta de obiect la acea clasa.
- Rezultatul afisat de acest exemplu este:
3.14
Aria = 19103.76

Daca se incearca modificarea valorii constantei, in clasa sau in afara ei (Clasa::CONSTANTA=alta_valoare;), va genera eroare.
- In interiorul clasei, constantele pot fi accesate si prin cuvantul special self in loc de numele clasei:
                self::CONSTANTA
- In afara clasei, constantele pot fi accesate si prin intermediul instantei de obiect, dar dupa crearea ei. In exemplu de mai sus, dupa declararea instantei se poate folosi si   $objTest::PI;

2. Proprietati si metode Statice

Pe langa atributele: "public", "private" si "protected"; prin care se defineste domeniul de acces al proprietatilor si metodelor; acestea pot fi create si ca statice, astfel, vor apartine exclusiv clasei, si nu pot fi apelate prin instanta de obiect a clasei, ci direct prin ea, cu operatorul doua-puncte (::).
Pentru a defini o proprietate sau metoda ca statica, se foloseste cuvantul static inaintea atributului, cand sunt create aceste elemente. Sintaxa generala este:
                static atribut $proprietate
                static atribut function Metoda()
- atribut este unul din cuvintele: public, private sau protected; care stabilesc domeniul de existenta.
Aceste elemente statice nu pot fi apelate prin instanta de obiect deoarece nu apartin ei, ele apartin clasei si pot fi apelate cu formula:
                NumeClasa::$proprietate
                NumeClasa::metoda()
- Observati ca la proprietate, cand e statica trebuie adaugat si caracterul $ (fara caracterul '$', sintaxa "NumeClasa::proprietate" este confundata cu cea pt. constante).

• In interiorul clasei, elementele statice pot fi apelate si prin cuvantul special self in loc de numele clasei:
                self::$proprietate         sau         self::Metoda()


Iata un exemplu din care se intelege mai bine. In clasa urmatoare, denumita "elStatic" se definesc doua proprietati statice: una cu atribut "private" (site), a doua publica (id); o metoda constructor si alta statica.
<?php
// Clasa elStatic
class elStatic {
  // Definire proprietati statice
  static private $site = 'marplo.net';        // Privata
  static public $id = 78;                       // Publica

  // Constructor
  public function __construct($site) {
    // Daca parametru $site e de tip String si cel putin 4 caractere
    // Atribuie valoarea la proprietatea "site" si apeleaza metoda getProp()
    // Altfel, seteaza un mesaj de eroare
    if(is_string($site) && strlen($site)>3) {
      elStatic::$site = $site;
      self::getProp();             // Apelare prin cuvantul special  self
    }
    else throw new Exception('Valoare incorecta pt. site');
  }

  // Metoda statica
  static public function getProp() {
    // Afiseaza valoarea proprietatilor statice (folosind numele clasei, dar si cuvantul  self )
    echo '<br /> ID = '. elStatic::$id. ' - site: '. self::$site;
  }
}
?>
- Vedeti explicatiile din cod si modul de lucru, cum sunt accesate proprietatile si metoda statica.
- Deoarece elementele statice apartin direct clasei, pentru utilizarea lor nu e nevoie de crearea unei instante la aceasta clasa. Dar se pot folosi si instante, acestea determina auto-apelarea metodei constructor, dupa cum puteti vedea in scriptul urmator, care foloseste elemente din clasa "elStatic" si o instanta la ea.
<?php
echo elStatic::$id;        // Afiseaza valoarea proprietatii statice "id"
elStatic::getProp();       // Apeleaza metoda statica getProp()

elStatic::$id = 89;       // Modifica valoarea proprietatii statice "id"

// Creare Instanta la clasa elStatic
$obj = new elStatic('www.php.net');
?>
- Observati ca valoarea proprietatii statice care e publica (aici "id") poate fi schimbata in afara clasei si influenteaza dupa ea toate instructiunile in care e folosita (ca si cum ar fi modificata in clasa), inclusiv orice instanta la clasa, creata dupa modificare.
- Acest exemplu va afisa in browser urmatorul rezultat:
78
ID = 78 - site: marplo.net
ID = 89 - site: www.php.net
- Prin crearea instantei s-a obtinut rezultatul dat de metoda constructor.

• Intr-o clasa se pot folosi combinate: constante, metode si proprietati statice si generale (fara "static"), dar in corpul metodelor statice se pot utiliza doar elemente care si ele sunt statice, sau constante. Accesarea in codul dintr-o metoda statica a unei proprietati cu formula $this->proprietate genereaza eroare.

$this face referire la instanta de obiect curenta, self se refera la clasa curenta.


La pagina Functii - clase si obiecte sunt prezentate cateva functii PHP pentru Clase si Obiecte.

In lectia urmatoare e prezentata utilizarea mostenirii si clasele extinse.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut indica faptul ca un camp de formular trebuie completat?
required="required" autofocus="autofocus" placeholder="text"
<input type="text" name="name1" required="required" />
Ce metoda CSS misoreaza sau mareste dimensiunile unui element (inclusiv continutul)?
translate() scale() skew()
#some_id:hover {
  transform: scale(2, 1.5);
  -ms-transform: scale(2, 1.5);    /* IE 9 */
  -moz-transform: scale(2, 1.5);   /* Firefox */
}
Click pe metoda obiectului Date care returneaza ziua din luna.
setDate() getMonth() getDate()
var rightnow = new Date();
var day = rightnow.getDate();
alert(day);
Ce functie este folosita pentru a incarca un fisier pe server?
is_file() move_uploaded_file() fopen()
if(move_uploaded_file($_FILES["field_name"]["tmp_name"], "dir/file_name")) {
  echo "Fisierul a fost incarcat";
}
Cum se spune in engleza expresia: "Ploua cu galeata"?
rain cats and dogs rain buckets quiet rain
In Bucharest it`s raining cats and dogs.
- In Bucuresti ploua cu galeata.
Cum se spune in spaniola expresia: "Ploua cu galeata"?
llover cubo llover a cántaros lluvia tranquila
En Madrid está lloviendo a cántaros.
- In Madrid ploua cu galeata.
OOP - Constante, Proprietati si Metode Statice

Last accessed pages

  1. Cursuri limba engleza gratuite si lectii online (64876)
  2. Limba spaniola curs online incepatori si avansati (29418)
  3. Schimbare imagine din select (688)
  4. Verbe la indicativ, cu forma yo neregulata (1981)
  5. Afisare si chenare din CSS la elemente HTML (5736)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (306)
  2. Cursuri limba engleza gratuite si lectii online (126)
  3. Coduri pt culori (113)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (101)
  5. Gramatica limbii engleze - Prezentare Generala (93)