php - MySQLi strange errors -


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