Newsgroup: it.comp.www.php
Titolo: [newbie] Cosa ritorna questa funzione

Salve a tutti,
mi sto cimentando da poco nella programmazione con PHP.
Premetto che ho una buona conoscenza di ASP 3.0, quindi possibili
analogie riesco a comprenderle.
Ho una funzione (che è inclusa nella piattaforma UCCASS in PHP 4.3)
dellaquale non riesco a tirare fuori il significato. Ve la posto:
    function _getAccessPanel($username, $password)
    {
        $retval = FALSE;
        if(isset($_SESSION['access_control'][$username]))
        { $retval = $_SESSION['access_control'][$username]; }
        else
        {
            $query = "SELECT username, password FROM
{$this->CONF['db_tbl_prefix']}users WHERE username='$username' AND
password='$password'";
            $rs = $this->db->Execute($query);
            if($rs === FALSE)
            { $this->error('Unable to get access control setting for
user: ' . $this->db->ErrorMsg()); }
            elseif($r = $rs->FetchRow($rs))
            { $retval = $r['access_control']; }
        }
        return $retval;
    }
La funzione in sè mi è abbastanza chiara.
Ciò che non riesco ad interpretare sono le due righe:
$retval = $_SESSION['access_control'][$username];
e
$retval = $r['access_control'];
$retval sarà un valore booleano da quello che mi pare di capire.
1- $_SESSION['access_control'][$username]; cosa fa di preciso?
Restituisce un oggetto Session o un valore booleano?
2-$r['access_control']; cosa restituisce? L'uso della variabile $r è una
sorta di standard usato da chi programma in PHP? (ad esempio in ASP rs è
l'abbreviazione di RecordSet)
Mi scuso per le domande apparentemente semplici, ma nè sul libro che sto
studiando, nè su google gruppi sono riuscito a trovare qualcosa di utile.
Saluti
Nicola

 l'abbreviazione di RecordSet)
E` un normale array (con indici non numerici, implementato con una hash 
table, per la precisione), quindi restituisce il valore dell'array $r 
all'indice "access_control", che, in questo caso, corrisponde al campo 
"access_control" nella tabella del database.
Non esistono "standard" per i nomi delle variabili in PHP. Ognuno ha il 
suo. Qui probabilmente e` un'abbreviazione per "record", e $rs appena 
sopra e` per "record set",ma io personalmente uso $res per il risultato 
della query, e $row per ogni riga.
 
Bye.

 della query, e $row per ogni riga.
Si, anche in altri linguaggi è così, però è consuetudine usare rs per i
recordset (come in php mi pare di capire)... mentre non capivo che
cavolo ci facesse l'array $r (che ora devo andare a pescare dai vari
include... visto che deve essere per forza un array globale in quanto
usato in tantissime funzioni su UCCASS).
Grazie ancora, sono sicuro che tornerò a darvi fastidio...
Nicola

 usato in tantissime funzioni su UCCASS).
Non devi cercare niente. $r viene inizializzato li` e usato fino alla fine 
della funzione.
In PHP non devi dichiarare le variabili, basta che le usi.
$r e` una variabile locale che sparisce al termine della funzione, cosi` 
come $retval, $query e $rs.
In particolare questa riga:
elseif($r = $rs->FetchRow($rs))
significa:
Assegna (e istanzia) $r come risultato del metodo FetchRow dell'oggetto 
$rs. Se l'assegnazione va a buon fine il tutto vale TRUE, quindi viene 
eseguito il blocco dopo.
Attento a non fare confusione tra = (assegnazione) e == (confronto). E 
aggiungiamoci anche === ("identicita`").
Bye.

 aggiungiamoci anche === ("identicita`").
Si, un pò come il C++ o Javascript.
Grazie mille sei stato preziosissimo.
Nicola

Ho risolto richiamando una funzione pubblica creata nella classe.
Non so per quale motivo assurdo volevo utilizzare dei dati privati della
classe, come se questa fosse un modulo (chi programma in VB6 capirà cosa
intendo).
In ogni caso mi sembra strano che PHP non mi abbia restituito nessun errore.
Nicola