Header

PHP klase i objekti

Pošalji komentar

Ocenite članak

 

Objasnite razliku između klase i objekta. E, ovo je jedno od popularnijih pitanja prilikom razgovora za posao.

Za početak, pokušajte da opišete sebe nekim parametrima:

  • ime i prezime
  • godina rođenja
  • pol
  • matični broj (JMBG)
  • ...


Ovaj spisak može neograničeno da se produžava. Lepo je to što navedeni podaci mogu da opišu svakog kandidata koji je došao na pomenuti razgovor za posao. E, to je klasa.

Jedan kandidat je bio Marko Petrović, a drugi Marija Aleksić. Marko i Marija su objekti.

1
ime i prezime: Marko Petrović
2
godina rođenja: 1992.
3
pol: Muški
4
JMBG: 1234567890123
5
---
6
ime i prezime: Marija Aleksić
7
godina rođenja: 1994.
8
pol: Ženski
9
JMBG: 0101994711234


Ovi podaci se mogu opisati sledećom klasom:

1
<?php
2
3
class kandidat
4
{
5
function kandidat($prezime, $ime, $jmbg)
6
{
7
$this->prezime = $prezime;
8
$this->ime = $ime;
9
$this->jmbg = $jmbg;
10
}
11
}
12
13
$kandidat = new kandidat('Aleksić', 'Marija', '0101994711234');
14
print_r($kandidat);
15
16
?>


Ukratko



  • Klase su tipovi koji opisuju strukturu objekta
  • Objekti su konkretni podaci
  • Podaci u klasi se zovu atributi, dok se funkcije u klasi zovu metode.


Pravila za formiranje klasa



Pokušajte da za posmatrani problem razdvojite bitno od nebitnog..

  • Vidljivost. U klasi podaci treba da budu skriveni, osim onih koji su eksplicitno deklarisani kao javni.
  • Enkapsulacija. Kontrola pristupa komponentama objekta.
  • Modularnost. Razbijanje klase na manje delove.
  • Nasleđivanje. Kada jedna klasa nasledi drugu, nasledila je i njen kompletan sadržaj koji se potom može izmeniti ili proširiti.


Metode



Funkcije (metode) u klasi mogu imati sledeće uloge:

  • Modifier (mutator, odnosno setter). Kontroliše promene promenljive.
  • Accessor (getter). Vraća vrednost privatne promenljive.
  • Constructor. Poziva se prilikom kreiranja objekta.
  • Destructor. Poziva se prilikom gašenja (destrukcije) objekta.


1
class Student
2
{
3
private $ime;
4
5
public function dajIme() {
6
return $this->ime;
7
}
8
public function zadajIme($novoIme) {
9
$this->ime = $novoIme;
10
}
11
}


Vidljivost



Za svaki podatak (atribut) i funkciju (metod) unutar klase može se definisati vidljivost (pravo pristupa) van klase:

  • public - dostupni su svima, bez ograničenja.
  • private - mogu im pristupiti samo funkcije (metode) unutar klase.
  • protected - dostupni su funkcijama (metodama) date klase, kao i funkcijama klasa izvedenih iz te klase.


1
<?php
2
3
class kandidat
4
{
5
public $ime;
6
protected $pol;
7
private $jmbg;
8
9
function kandidat($ime, $pol, $jmbg)
10
{
11
$this->ime = $ime;
12
$this->pol = $pol;
13
$this->jmbg = $jmbg;
14
}
15
16
function prikaziPodatke()
17
{
18
echo $this->ime;
19
echo $this->pol;
20
echo $this->jmbg;
21
}
22
}
23
24
$kandidat = new kandidat('Aleksić', 'Marija', '0101994711234');
25
echo $kandidat->ime; /* Radi */
26
echo $kandidat->pol; /* Fatal Error */
27
echo $kandidat->jmbg; /* Fatal Error */
28
$kandidat->prikaziPodatke(); /* Prikazuje sve */
29
30
?>