Buondì.
Stò realizzando un sito in php (logicamente) con il paradigma orientato ad oggetti.
Non posso non ammettere che è un lavoraccio scrivere le classi.
Ho comunque finalmente scritto delle classi. Una astratta che funge da 'padre' per le classi di connessione al db mysql con mysqli. Inoltre ho scritto una classe per richiamare i template e sostituirne i placeholder con il contenuto dinamico. Ora, ecco l'errore che sussiste quando richiamo la classe di connessione al db dell'utente con i permessi per scrivere sul db.
Codice PHP:
Fatal error: Call to private mysqliWriter::__construct() from invalid context in /path/list.php on line 4
Alla riga 4 del suddetto file c'è il richiamo della classe, ovvero :
Codice PHP:
$db = new mysqliReader;
Ora posto la classe di connessione al db e la classe astratta :
Codice PHP:
<?php abstract class connectingDb {
abstract function connect();
abstract function disconnect();
protected $host;
protected $user;
protected $password;
protected $database;
protected $connection;
protected $tmp;
protected $replacers;
protected function setHost($host) {
$this->host = $host;
}
protected function setUser($user) {
$this->user = $user;
}
protected function setPassword($password) {
$this->password = $password;
}
protected function setDatabase($database) {
$this->database = $database;
}
protected function getHost() {
return $this->host;
}
protected function getUser() {
return $this->user;
}
protected function getPassword() {
return $this->password;
}
protected function getDatabase() {
return $this->database;
}
}?>
Codice PHP:
<?php require_once 'path/getTemplate.php';
require_once 'path/constantError.php';
class mysqliWriter extends connectingDb {
public $host;
public $user;
public $password;
public $database;
public $connection;
public $tmp;
public $replacers;
private function __construct() {
$this->setHost('localhost');
$this->setUser('');
$this->setPassword('');
$this->getDatabase('');
}
public function connect() {
$this->getHost();
$this->getUser();
$this->getPassword();
$this->getDatabase();
$this->connection = new mysqli($this->getHost(), $this->getUser(), $this->getPassword(), $this->getDatabase());
if (mysqli_errno($this->connection)) {
$this->tmp = new getTemplate("path/errors.html");
$this->replacers = array("error" => DB_NOT_CONNECTED);
$this->tmp->replace($this->replacers);
return print $this->tmp->show();
exit();
}
}
public function query($query) {
if(strlen($this->connection->query($query)) > 0) {
return $this->connection->query($query);
}
}
public function disconnect() {
return $this->connection->close();
}
private function __destruct() {
unset($this->host, $this->user, $this->password, $this->database, $this->connection);
}
}?>
Chiedo scusa per la lunghezza del codice, ma almeno c'è tutto lì. Sicuramente c'è un'errore di logica, perchè non mi pare c'è ne siano di parsing, però non si può mai sapere.
Spero proprio che qualcuno possa aiutarmi e magari darmi qualche dritta per riuscire a procedere senza troppi errori e ad acquisire il senno che stà alla base dello sviluppo oop.
Grazie mille,
buonagiornata ancora