Page 1 sur 1

Variables de classes dans une autre classe?

Posté : 27 juin 2006, 04:32
par Mouet
Bonjour !

J'ai un petit problème qui, bien que détournable me trotte à longueur de journée...

J'ai une classe Utilisateurs qui crée automatiquement les donnée relatives à cet utilisateurs via les variables

à l'interrieur de la classe Utilisateurs
function compile($data)
		{
			$this->id = $data['id'];
			$this->name = $data['name'];
			$this->pass = $data['pass'];
			$this->rank = $data['rank'];
Etc, etc...

Par la suite, j'aimerais dans une autre classe (Nouvelles) et dans cette page, une fonction d'ajout mais, je veux récuperer la variable

$user->name mais celle ci ne correspond à rien (la compile de la classe utilisateurs est bien faite avant).

comment puis-je faire pour retourner les variables d'une session dans une autre session?

Bien à vous, Mouet

Posté : 27 juin 2006, 07:53
par Cyrano
Il faudrait voir les classes en question, mais parmi les possibilités à explorer, il y a l'héritage des classes : il faudra voir dans quelle mesure ta classe nouvelle pourrait hériter de la classe utilisateur et dans ce cas, elle deviendrait :

Code : Tout sélectionner

class nouvelle extends utilisateur
Dans ce cas, la classe "fille" hérite des méthodes et des propriétés de la classe mère.

Mais sans code, difficile de te dire mieux.

Posté : 27 juin 2006, 13:38
par Mouet
Je vais voir cela ! ma classe utilisateur comportes la gestion du loggin d'utilisateur (via session) et ma classe nouvelle, tout ce qui s'en rapporte (ajout, suppression, affichage, ...) et donc, pour ma requete d'ajout, je récupère le nom d'utilsateur loggé.

En gros (je n'ai mis que les parties qui nous interesse):
<?php
require_once('INCLUDES/db.inc');
session_start();
header('Cache-control: private');
class User
{
	var $id;
	var $name;
	var $pass;
	var $rank;
	function User($data)
	{
		$this->id = $data['id'];
		$this->name = $data['name'];
		$this->pass = $data['pass'];
		$this->rank = $data['rank'];
        }
	function login()
	{
		$_SESSION['uid'] = $this->name;
	}

	function &load($id)
	{
		$id = db_format_value($id);
		$query = "SELECT * FROM site_users WHERE id = $id";
		$res = mysql_query($query, db());
		if ($res === false)
			return null;

		$data = mysql_fetch_array($res);
		echo mysql_error();
		return new User($data);
	}

	function &current()
	{
		static $user = null;

		if ($user !== null)
			return $user;

		if (isset($_SESSION['uid']))
		{
			$users = &User::search($_SESSION['uid']);
			if (count($users) > 0)
				$user = $users[0];
		}

		return $user;
	}
}
?>
Et dans ma class Nouvelle

function _add($i,$u)
{
	$dat = date("Y-m-d");
	$he = date("H:i:s");
	$QUERY = "INSERT INTO events_up(id,id_event,name,class,udi,dat,heure) VALUES('','$i','$user->name','$user->classe','$u','$dat','$he')";
	$res = mysql_query($QUERY, db());
}
Bien sur, $user->name et $user->classe sont null :s

Posté : 28 juin 2006, 15:41
par Mouet
up? :oops: