In primis buongiorno Utenti del forum,
vi ringrazio in primis della vostra gent.le attenzione all'argomento in questione che mi sta attualmente un pò attanagliando:
Premettiamo che sono GIOVINE di programmazione ad oggetti con PHP, ma aldilà di questo:la mia necessità è quella di estendere una classe in modo tale che in caso di login o registrazione abbia la possibilità di estendere all'occorrenza la classe database per poter effettuare la connessione, verificare che la connessione sia già stata effettuata, e successivamente registrare o far loggare l'utente in questione.
Attualmente ho creato la seguente classe di connessione:
codice:
// definizione della classe astratta class ConnessioneMySQL { protected $Utente; protected $Password; protected $Host; protected $database; protected $connessione; private $err; public $errorMsgs = array( 'connessione' => 'connessione non avvenuta', 'connessione_database' => 'database non trovato o non selezionato correttamente', ); protected function getErrorMsg() { if($this->err != '') { print $this->err; return false; }else { print "nessun errore rilevato"; } } protected function ErroreMessaggio($campo) { if($this->errorMsgs[$campo]) { $this->err .= "
" . $this->errorMsgs[$campo] . "</p>"; } } protected function settaUtente($user) { $this->Utente = $user; } protected function settaPassword($password) { $this->Password = $password; } protected function settaHost($host) { $this->Host = $host; } protected function settadb($db) { $this->database = $db; } protected function getUtente() { return ($this->Utente); } protected function getPassword() { return ($this->Password); } protected function getHost() { return ($this->Host); } protected function getDb() { return ($this->database); } } class estendiMysql extends ConnessioneMySQL { protected function DatiConnessione(){ $connessione = mysql_connect($this->getHost(), $this->getUtente(), $this->getPassword()); if ( $connessione ) { }else { ErroreMessaggio('connessione'); } } protected function Connessione_database(){ if ( mysql_select_db($this->getDb(),$connessione) ) { return true; }else { ErroreMessaggio('connessione_database'); return false; } } public function __construct ($host,$user,$pass,$dbsp) { $this->settaHost($host); $this->settaUtente($user); $this->settaPassword($pass); $this->settadb($dbsp); $this->DatiConnessione(); return $this->getErrorMsg(); } }
che non fa altro che verificare gli errori e connettere al database tramite l'istanziamento finale dell'ogggetto:
$open_connessione = new estendiMysql('localhost','root','','stopdebiti');
-------
infine nell'index viene richiamato tramite un include_once("database.php"); lo script in questione con dentro i dati sopra indicati..e quindi la connessione parte in automatico..
ORA METTIAMO CASO IO SIA SULLA PAGINA PER LA REGISTRAZIONE ho bisogno di estendere la classe con una classe ben definita per la registrazione per effettuare quest'ultima..in maniera identica nel caso mi trovassi nella pagina di login.
Dunque,se io però estendo la classe di connessione al database con un altra, se io istanzio un oggetto relativamente alla superclasse il costruttore partità una volta sola mandando in entrata i dati di login o registrazione, e dunque COME FACCIO A FAR CONNETTERE COME SOPRA IL DATABASE E DOPO FAR PARTIRE A SECONDA DELLA PAGINA I DATI RELATIVI ALLA REGISTRAZIONE O LOGIN?
mi consigliate, dopo alcune deduzioni, di istanziare un oggetto estendiMysql fuori dalla classe e poi istanziare un secondo oggetto con la classe estesa per il login o registrazione, o creare un oggetto direttamente dalla classe?!
ES:
class Registrazione {
public function __construct() {
print "registrazione partita";
}
public function creaConnessione() {
$this->connect_now = new estendiMysql('localhost','root','','stopdebiti');
}
}
in modo tale che si crei un oggetto una volta che viene inclusa la classe di registrazione..
spero di essere stato chiaro anche se ho i miei dubbi
VI STIMO!