< PHP OOP

PHP OOP konstruktor

Szerző: Sallai András

Copyright © Sallai András, 2020, 2022

CC Attribution-Share Alike 4.0 International

Web: https://szit.hu

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.

<?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:

<?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

<?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.