Kezdőoldal » Számítástechnika » Programozás » Miért nem tudok ilyen öröklési...

Miért nem tudok ilyen öröklési láncot létrehozni php-ban?

Figyelt kérdés

Van egy sql connection classem. Az a neve, hogy Connection.

Örököl tőle egy FromDatabase nevű class, és a constructor-t parent::__construct-al megkapja tőle.

Attól örököl egy ToDatabase class, a konstruktort szintén megkapja parent::__contruct-al.

Erre a hibaüzenet a következő:


Missing argument 1 for FromDatabase::__construct(), called in


Van egy protected változó, aminek értéket kell adnom a FromDatabase-ben is és a ToDatabase-ben is, egy asszociatív tömb. Mindkettőben ugyanaz.

Kéne örökölnöm a $conn nevű változót is, és a $keysAndValues változót is egy öröklési láncban a ToDatabase-ban.


Nagyjából ez a kód:

class Connection {

protected $conn;

function __construct(){

$this->conn = new mysqli(....

}

}


class FromDatabase {

protected $keysAndValues;

function __construct($keysAndValues){

$this->keysAndValues = $keysAndValues;

parent::__construct();

}

}


class ToDatabase {

function __construct() {

parent::__construct();

}

}


Lehet eggyáltalán ilyen öröklési láncot kialakítani php-ban?



#php #objektumorientált programozás #öröklődés #öröklési lánc #parent::__construct()
2018. jan. 3. 13:56
 1/3 anonim ***** válasza:

A FromDatabase-nek nincs paraméter nélküli konstruktora.

Az osztályokat mindenesetre érdemes lenne átgondolni, mert ez valami szörnyszülött, nem OOP kód.

2018. jan. 3. 14:18
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

Na megvan a megoldás. Köszönöm szépen a választ. Sajnálom, ha szerinted rossz a kód, amit írtam, de úgy vélem, hogy ezt igencsak nehezen tudod megítélni annak a fényében, hogy a kód funkcióját nem ismered. Ennek ellenére lehet, hogy igazad van.

További szép napot kíváncsok neked!


class GrandParent {

protected $variable;

function __construct($variable) {

$this->variable = $variable;

}

}


class ParentClass extends GrandParent {

function __construct($variable) {

parent::__construct($variable);

}

public function echo() {

echo $this->variable;

}

}


class Child extends ParentClass {

function __construct($variable) {

parent::__construct($variable);

}

public function echo() {

echo $this->variable;

}

}


$child = new Child("szöveg");

$child->echo();

2018. jan. 3. 14:39
 3/3 A kérdező kommentje:
Ja amúgy nyilván nem echozásra kellenek a classek.. :D
2018. jan. 3. 14:39

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!