i trying extend mysqli class.
<?php class datamanager extends mysqli { private $username = "me"; private $password = "notgonnatellyou"; private $dbname = "data"; private $host = "sql.my"; public function __construct() { return connect(); } private function connect() { $connection = parent::__construct($host,$username,$password,$dbname); return $connection; } public function query($query) { autocommit(false); if (!($do = parent::query($query))) { rollback(); return false; } else { commit(); return $do; } } } ?>
now getting following error:
fatal error: access level datamanager::connect() must public (as in class mysqli) in /me/datamanager.php on line 37
i don't see why should public... , if make public, says
call undefined function connect()
but see, made function...
your first problem can't increase privacy of methods inherit base class. if have instance of mysqli
, want call connect
on it, surprised if unexpectedly private. having class abstract method wasn't implemented in child class.
the second problem @devpro pointed out in comment have call connect
$this->connect();
rather connect()
.
you discover constructor cannot return value. "return value" of constructor instantiated type.
also, references fields wrong too. need use $this->host
, $this->username
, etc.
Comments
Post a Comment