Arhive categorie: PHP

Clase abstracte

Articol in lucru…

O clasa abstracta este o clasa schelet care poate fi utilizata doar pentru a scrie noi clase ce o extind si niciodata nu poate fi invocata in initializarea directa unui obiect.

O clasa abstracta poate contine una sau mai multe metode abstracte, ale carui corp nu va fi declarat. Aceasta va obliga clasa care extinde clasa abstracta sa declare toate metodele abstracte definite. Exceptie o fac doar clasele abstracte ce extind clase abstracte, dar o clasa normala va fi obligata sa declare toate metodele abstracte mostenite.

Utilizarea claselor abstracte poate fi necesara in diverse cazuri:

  • obligatia de a construi o clasa ce va implementa obligatoriu metode asteptate
  • obligatia de a porni de la acest schelet ca baza

Reguli ce privesc clasele abstracte:

  • Orice clasa care contine o metoda abstracta, trebuie implicit declarata abstracta
  • Orice metoda declarata abstracta, in implementare trebuie sa contina acelasi nevel de acces sau mai slab; cand metoda abstracta e declarata protejata, ea poate fi implementata ca protejata sau publica, dar nu privata; o metoda abstracta declarata publica, obligatoriu va fi declarata public
  • O clasa abstracta nu poate fi initializata ca obiect
  • Orice metoda abstracta nu poate contine corp de functie
  • Daca declari o clasa extinzand o clasa abstracta, esti obligat sa declari clasa tot abstracta

Exemplu:

Cand nu este ideala utilizarea unei clase abstracte, alternativa ei este Interfata, ce o vom discuta ulterior.

Bol cu cereale

Type hinting și tipul valorii întoarse

Din PHP 7.0.0, limbajul ne lasă să fim mult mai specifici în ce vor accepta și ce vor întoarce funcțiile, respectiv metodele din obiecte.

Poți indica ce tip de argument are nevoie funcția (type hinting – indiciu de tip) și ce tip de rezultat vor întoarce (return type – tipul întoarcerii).

Iată un exemplu:

declare(strict_types=1);

function adaugaNumere (int $a, int $b, boolean $afiseazaSuma): int
{
  $suma = $a + $b;
  if ($afiseazaSuma) {
    echo $suma;
  }
  return $suma;
}

adaugaNumere(1, 2, true); // succes
adaugaNumere(1, "2", true); // eroare, am declarat strict_types activ
adaugaNumere(1, "string", true); // eroare, indiferent de valoarea lui stric_types

Această funcție primește două argumente numere întregi (integer) și o valoare booleană. Va întoarce un număr întreg.

Declarația lui strict_types (tipuri stricte) se face întotdeauna la începutul fișierului pentru a informa compilatorul intenția de a utiliza acest mod.