Variables de classes dans une autre classe?

Eléphant du PHP | 112 Messages

27 juin 2006, 04:32

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
Image

Mammouth du PHP | 19672 Messages

27 juin 2006, 07:53

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 112 Messages

27 juin 2006, 13:38

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
Image

Eléphant du PHP | 112 Messages

28 juin 2006, 15:41

up? :oops:
Image