Tartalomjegyzék

< PHP OOP

PHP OOP konstruktor

Osztály konstruktor

A konstruktor egy speciális metódus, amely egy objektum példányosítása során automatikusan meghívódik, akkor is ha azt nem definiáltuk. A PHP 5. verziótól támogatott. Ha definiáljuk a konstruktort, akkor bemenő paramétereket is megadhatunk neki, amelyek a tulajdonságoknak kezdőértékként szolgálhatnak.

A konstruktor szintaktikája:

void __construct ([ mixed $args [, $... ]] )

Egy osztályban egy kocsi tulajdonságait tároljuk, rendszám, szín és ár. A konstruktor segítségével kezdőértéket adunk a tulajdonságoknak.

Kocsi.php
<?php
 
class Kocsi
{
    public $rendszam;
    public $szin;
    public $ar;
 
    public function __construct($rendszam, $szin, $ar)
    {
        $this->rendszam = $rendszam;
        $this->szin = $szin;
        $this->ar = $ar;
    }
}
?>

A következő példában egy metódust is deklarálunk, amellyel kiíratható az objektum tulajdonságainak aktuális értéke.

<?php
class Kocsi
{
    public $rendszam;
    public $szin;
    public $ar;
 
    public function __construct($rendszam, $szin, $ar)
    {
        $this->rendszam = $rendszam;
        $this->szin = $szin;
        $this->ar = $ar;
    }
 
    public function mutatReszletek() 
    {
        print "{$this->rendszam} | {$this->szin} | {$this->ar} Ft";
    }
}
?>

Konstruktor neve

A konstruktor neve lehet az osztály neve is, de névteres osztályokban nem működik az 5.3.3-tól:

Dolgozo.php
<?php
 
class Dolgozo {
    public $nev;
    public function Dolgozo($nev) {
        $this->nev = $nev;
    }
}

Konstruktor névtérben

Osztály névtérben:

<?php
namespace Foo;
class Bar 
{
    public function Bar() 
    {
        // konstruktorként kezeljük a PHP 5.3.0-5.3.2 verziókban
        // Általános metódusként kezeljük a PHP 5.3.3 verziótól,
        // névterek használata esetén
    }
}
?>

Destruktor

Destruktor szintaxisa:

void __destruct ( void )
<?php
class MyDestructableClass 
{
   function __construct() 
   {
       print "In constructor\n";
       $this->name = "MyDestructableClass";
   }
 
   function __destruct() 
   {
       print "Destroying " . $this->name . "\n";
   }
}
 
$obj = new MyDestructableClass();
?>

Nemlétező konstruktor

Valami.php
<?php
 
class Szemely {
    public function Szemely($nev) {
        $this->nev = $nev;
    }
}
 
class Dolgozo extends Szemely {
 
}
 
$mari = new Dolgozo("Ari Mária");
echo $mari->nev;

A Szemely osztály konstruktora kerül meghívásra.