salut,
J'ai regardé le code rapidement et je dit non
Le mot clef global ne devrais pas exister (une classe c'est un objet et un objet doit être "étanche" tous ce qu'il utilise lui est fournis par le constructeur ou un "setter").
si tu a besoin d'une ressource utilise un setter.
la classe que tu indique est une dao, mais ça part dans tout les sens, les setter et getter ne doivent pas contenir "d'intelligence" ils retournent simplement une données.
Certaines méthodes sont redondantes, d'autre inutile, il faut structurer les classes.
regarde des tutos sur uml pour cela
je ferais ton code dans ce style (en gardant ta classe)
<?php
class customerGroup {
protected $is_logged_on = false;
protected $data = array();
protected $OSCOM_PDO;
protected $OSCOM_Customer;
public function __construct() {
if (isset($_SESSION['customer_group_id'])) {
$this->data = $_SESSION['customer_group_id'];
}
}
public function get($key = null) {
if (isset($this->data[$key])) {
return $this->data[$key];
}
return null; //$this->data; // ? à mon avis comportement bizzar la !
}
public function getCustomersGroupId() {
if (isset($this->data['customers_group_id'])) {
return $this->data['customers_group_id'];
} else {
return 0;
}
}
public function setData($id) {
$this->data = array();
if (is_numeric($id) && ($id > 0)) {
// :table_customer ne doit surement pas exister ?
$QcustomerGroup = $this->OSCOM_PDO->query('select customers_group_id
from table_customers
where customers_id = ' . $this->OSCOM_PDO->quote($id, PDO::PARAM_INT));
if ($QcustomerGroup !== false) {
if ($data = $QcustomerGroup->fetch(PDO::FETCH_ASSOC) !== false) {
$this->setID($id);
// $this->setCustomerGroupId($QcustomerGroup->value('customers_group_id')); pas de méthode value sur un pdostatement
$this->setCustomerGroupId($data['customers_group_id']);
$_SESSION['customer_group_id'] = $this->get('customers_group_id'); // non pas $this->data c'est un tableau !
return true;
}
return false;
}
} // end is_numeric($id)
return false; // si erreur
}
public function setID($id) {
if (is_numeric($id) && ($id > 0)) {
$this->data['id'] = $id;
}
}
public function setCustomerGroupId($id) {
if (is_numeric($id) && ($id > 0)) {
$this->data['customers_group_id'] = $id;
}
}
public function reset() {
$this->is_logged_on = false;
$this->data = array();
if (isset($_SESSION['customer_group_id'])) {
unset($_SESSION['customer_group_id']);
}
}
/**
* @param boolean $is_logged_on
*/
public function setIsLoggedOn($is_logged_on) {
$this->is_logged_on = $is_logged_on;
}
/**
* @return boolean
*/
public function isLoggedOn() {
return $this->is_logged_on;
}
/**
* @param mixed $OSCOM_Customer
*/
public function setOSCOMCustomer($OSCOM_Customer) {
$this->OSCOM_Customer = $OSCOM_Customer;
}
/**
* @return mixed
*/
public function getOSCOMCustomer() {
return $this->OSCOM_Customer;
}
/**
* @param mixed $OSCOM_PDO
*/
public function setOSCOMPDO($OSCOM_PDO) {
$this->OSCOM_PDO = $OSCOM_PDO;
}
/**
* @return mixed
*/
public function getOSCOMPDO() {
return $this->OSCOM_PDO;
}
}
sinon perso je ferais une classe customer qui aura une propriété customer_group_id (entre autre) et une classe customuerDao qui elle fera toutes la logique permettant de retourner les infos d'un "customer" et retourner un "customer" avec toute les infos le concernant.
@+