Вызов как родительских, так и дочерних конструкторов

Некоторые из моих классов имеют конструкторы как в родительском, так и в дочернем классах. Как я могу запустить оба конструктора?

Родительский класс:

include 'c:/wamp/www/mvc/include/connect.php';
class Database
{

protected $mysqli;
protected $exc;

function __construct(mysqli $db)
{
mysqli_set_charset($db,'utf8');
$this->mysqli = $db;
}

<?php

Детский класс: (LoginClass)

<?phpclass Login extends Database {
private $username;
private $password;

function __construct(mysqli $db, $username, $password)
{
parent::__construct($db);
$this->setData($username, $password);
$this->getData();
}
function setData($username, $password)
{
$this->username = $username;
$this->password = $password;
}function getData()
{
$result = $this->mysqli->query("SELECT * FROM anvandare WHERE anvandarnamn = '$this->username;'  AND losenord =  '$this->password'");

$count = $result->num_rows;

if($count>0)
{
return true;
}
else
{
throw new Exception("Username or Password incorrect. Please try again");
}

}

LoginController.php

<?php
//LoginController
if($_POST)
{
if(isset($_POST['submit']) AND $_POST['submit'] == "login")
{
$username = $_POST['username'];
$password = $_POST['password'];
try
{
include '../model/Login.php';
$login = new Login($db ,$username, $password);

if($login == TRUE)
{
session_start();
$_SESSION['username'] = $username;
header("Location:../index.php");
}
}
catch (Exception $exc)
{
echo $exc->getMessage();
}
}
}

Я пробовал звонить parent::__construct($this->mysqli);в дочернем конструкторе, но как-то это не сработало.

1

Решение

Это, вероятно, не работает, потому что родительский конструктор требует экземпляр mysqli быть переданным. Следующая подпись должна работать, хотя:

require_once __DIR__ . '/Database.php';

class Login extends Database
{
function __construct(mysqli $db, $username, $password)
{
parent::__construct($db);
$this->setData($username, $password);
$this->getData();
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]