Hallo mensen ik ben pas begonnen met OO programmeren in php... ik weet alleen niet of ik het nu goed heb gedaan of niet (A) zou iemand mij wat tips kunnen geven?

Midas
'var' is PHP 4. Die mag je dus weglaten. :-)

Karl
Het is netter om een apart db class te maken.

Storeman
Je moet bedenken dat je een echte gebruiker hebt en wat deze kan doen.



<?
class user {
	private $uId;		// The user id
	private $uName;		// The user name
	private $uPass;		// The user password
	
	private var $qLimit;	// The limit for an query
	
	/* Functions to set values */
	// These functions sets data for uId, uName, uPass en qLimit
	function set_uId ($value) {
		$this->uId		=	$value;
	}
	function set_uName ($value) {
		$this->uName	=	$value;
	}
	function set_uPass ($value) {
		$this->uPass	=	$value;
	}
	function set_qLimit ($value){
		$this->qLimit	=	$value;
	}
	
	// Functions to use data
	// This function creates an user.
	// Needs atleast uName and uPass to be set
	public function createUser() {
		mysql_query("INSERT INTO users (uName, uPass) VALUES ('".$this->uName."','".$this->uPass."')");
	}
	
	// This function deletes an user
	// Needs atleast uId to be set
	public function deleteUser() {
		mysql_query("DELETE FROM users WHERE uId='".$this->uId."'");
	}
	
	// This function selects 1 or more users
	// Needs for normal atleast the limit and for specific the uId
	public function selectUser ($type) {
		if($type == 'specific'){
			mysql_query("SELECT * FROM users WHERE uId='".$this->uId."'");
		} elseif($type == 'normal'){
			mysql_query("SELECT * FROM users LIMIT ".$this->qLimit);
		}
	}
}
?>


alvast bedankt =D

EDIT:::

Oke ik heb de tips een beetje gelezen ik hoop dat ik het nu beter heb gedaan:

<?

class user extends dbConnect {
	private $uId;		// The user id
	private $uName;		// The user name
	private $uPass;		// The user password
	
	/* Functions to set values */
	// These functions sets data for uId, uName, uPass en qLimit
	function set_uId ($value) {
		$this->uId		=	$value;
	}
	function set_uName ($value) {
		$this->uName	=	$value;
	}
	function set_uPass ($value) {
		$this->uPass	=	$value;
	}
	
	// Functions to use data
	public function create() {
		if(empty($this->uName) || empty($this->uPass)){
			return 'The username or password was not set.';
		} else {
			$sql	=	"INSERT INTO users (uName, uPass) VALUES ('".$this->uName."', '".$this->uPass."')";
			parent::query($sql);
		}
	}
	
	// This function needs atleast uId to be set
	public function delete() {
		if(empty($this->uId)){
			return 'User id was not set.';
		} else {
			$sql	=	"DELETE FROM users WHERE uId='".$this->uId."'";
			parent::query($sql);
		}
	}
}
?>
Het is netter om een apart db class te maken.
Dit is meer procedurele code met een naampje er omheen.
Je kan beter voor je database functies een interface maken.
Karl zou je een voorbeeld willen maken hoe jij het zou doen?
Nope.
(Nu niet.)
'var' is PHP 4. Die mag je dus weglaten. :-)
De functienamen deleteUser en createUser zijn vreemd.

de functie delete() is logisch, dan verwijder je een user. Verder mis ik de constructor.

De selectUser functie hoort hier niet te zitten. Je object is een gebruiker, een gebruiker kan geen gebruiker selecteren. Dat is niet logisch. Wat zou een gebruiker verder nog kunnen... bijvoorbeeld:

zoekVriend( $naamVriend )
heeftToestemming(...)
logIn(..)
logUit(..)

Je moet bedenken dat je een echte gebruiker hebt en wat deze kan doen. Ik denk dat je nog iets verder in de manier van denken moet duiken, maar je bent op de goede weg!
Oke bedankt voor je comment Storeman daar heb ik wat aan (Y)
Naast de bovenstaande opmerkingen vraag ik me af of je echt iets uit je databse wilt verwijderen. Ik denk namelijk dat het beter is om een UPDATE uit te voeren en een veld te zetten. Bijvoorbeeld: deleted = 1
Dan moet je gewoon in je select even een extra stukje in de WHERE clausule plaatsen.

Een class stelt iets voor, bijvoorbeeld een gebruiker.
Een gebruiker heeft niets met een database te maken dus het extenden van een database class geeft aan dat je ontwerp niet klopt of dat jij het principe nog niet begrijpt.

Daarnaast is het in 99,99% van de gevallen niet nodig om het wachtwoord van de gebruiker ergens op te slaan, zoals in dit geval in een class.
Het wordt eenmaal gebruikt: controle gebruiker!
Als dat klopt is het wachtwoord verder niet meer nodig en mocht het ooit nodig zijn dan vraag je het gewoon opnieuw.

Succes!
Hoe moet ik het dan doen bijv: log in en log uit. ik dacht dat het zo was: een gebruiker is een object bijv Timmeh. En dan wat je allemaal met Timmeh zou kunnen doen? klopt dit of niet?
Tim Lijster schreef op 24.01.2010 11:55
En dan wat je allemaal met Timmeh zou kunnen doen? klopt dit of niet?
Niet wat je met een gebruiker kunt doen, maar juist wat die gebruiker zelf kan. Een object weet in principe alleen dingen over zichzelf en kan alleen dingen doen die op zichzelf betrekking hebben...

Inloggen is een kwestie van controleren of opgegeven gebruikersnaam en wachtwoord overeenkomen met die uit de database. Zo ja, dan is de gebruiker ingelogd. Dus:
<?php
public function logIn($username, $password) {
// Als $username en $password correct zijn, is gebruiker ingelogd
}
?>
Als het inloggen gelukt is, zou je bijvoorbeeld het User object kunnen retourneren, in het andere geval retourneer je false.

Reageren