Salve a tutti avrei un dubbio implementativo, stò aggiornando un mio script in OOP e mi sorge un problema con le transazioni. Io vorrei fare in modo che quando creo un'istanza della classe (passando l'id dell'utente) questa nel costruttore mi blocchi l'id dell'utente da eventuali richieste al DB e che nel distruttore me la sblocchi. Ecco un esempio di codice così rendo meglio l'idea:
codice PHP:
Qualche idea ?
codice PHP:
PHP:
<?php
class user
{
private $_id;
private $_soldi;
public $DB;
function __construct($id, $DB)
{
$this->_id = (int) $id;
//Uso una classe esterna per manipolare il DB
$this->DB = $DB;
//Blocco l'utente qui'
$data = $DB->row("SELECT soldi FROM user WHERE id = '".$id."' LIMIT 1");
//Se l'utente non esiste blocco tutto ovviamente
$this->_soldi = $data['soldi'];
}
function getSoldi()
{
return $this->_soldi;
}
function setSoldi($amount)
{
if($this->getSoldi >= $amount)
{
//Faccio l'update
$update = $this->DB->update("user",array('soldi' => 'soldi -'.$amount),"id = '".$this->_id."'");
//Se va tutto bene aggiorno
$this->_soldi -= $amount;
}
}
function __destructor()
{
//Sblocco l'utente qui
}
}
$objUser = new User(1,$db);
echo "L'utente ha ora ".$objUser->getSoldi();
$tolgo_soldi = $objUser->setSoldi(100);
echo " ed ora dopo avergli tolto 100 sacchi ".$objUser->getSoldi();
?>
Qualche idea ?