[PHP] OOP, lijkt dit nog ergens op ?

Pagina: 1
Acties:

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 14:50
Goedo avond allemaal, vandaag verveelde me ik een beetje (terwijl ik nog zooooooo veel moet doen). Maar ik was eens aan het kijken naar OOP in PHP. En het was allemaal wel interesant, en leek me wel handig. Ik heb nogteeds niet helemaal begrepen hoe het allemaal werkt. Maar na wat artikeltje ben ik maar gewoon zelf wat gaan knutselen, een beetje looz eigenlijk.

De class die ik aan het maken ben is voor een inlog systeem, dat leek me wel handig omdat je dan in een kort manier op een boel verschillende pages makkelijk terug kan vallen op het usersyteem.

Anyway hier is wat ik beetje heb lopen brouwen (nog lang niet af, en erg basic), maar m'n vraag is nu of ik wel goed bezig ben, is het wel OOP ?, wat moet r anders?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?
class User {

    // Vars
    var $Username;
    var $Password;
    var $Errors = array(
                        "NoSuchUser" => "Sorry, de gebruikte username bestaat niet.",
                        "" => ""
                        );
    var $ErrorFormat = "%s";

    // Function setID()
    function setID ($ID) {
        $this->ID = $ID;
    }

    function getID () {
        return $this->ID;
    }

    function setUserName ($UserName) {
        $this->UserName = $UserName;
    }

    function getUserName () {
        if (!IsSet($this->UserName)) $this->getUserData();
        return $this->UserName;
    }

    function setRealName ($RealName) {
        $this->RealName = $RealName;
    }

    function getRealName () {
        if (!IsSet($this->RealName)) $this->getUserData();
        return $this->RealName;
    }

    function setEmail ($Email) {
        $this->Email = $Email;
    }

    function getEmail () {
        if (!IsSet($this->Email)) $this->getUserData();
        return $this->Email;
    }

    function getUserData () {
        $SQL = "SELECT username, email, realname FROM users WHERE id = '".$this->getID()."'";
        $Query = mysql_query($SQL);
        $UserData = mysql_fetch_array($Query);
        $this->setUserName($UserData["username"]);
        $this->setRealName($UserData["realname"]);
        $this->setEmail($UserData["email"]);
    }

    // Function Login()
    function Login ($Username,$Password) {
        $SQL = "SELECT id FROM users WHERE username = '$Username' AND password = MD5('$Password') ";
        $Query = mysql_query($SQL);
        $NumRows = mysql_num_rows($Query);
        If ($NumRows == 1) {
            $UserID = mysql_result($Query,0);
            $this->setID($UserID);
            return True;
        } else {
            return False;
        } // End - If ($NumRows == 1)
    } // End - function Login($Username,$Password)

}

$user = new User;
if ($user->Login($username,$password)) {
  echo "Goedzo, en welkom <a href=mailto:".$user->getEmail().">".$user->getUserName()." (".$user->getRealName().")"."</a>";
} else {
  echo "STOUT !!!!!";
}
?>

  • Tomatrix
  • Registratie: Juni 1999
  • Laatst online: 27-02-2025
In PHP kan je niet OO programmeren, het is er te beperkt voor. Als je echt wil OO-en ga dan een taal als Java of C# leren.

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 14:50
Op zaterdag 23 februari 2002 01:16 schreef Tomatrix het volgende:
In PHP kan je niet OO programmeren, het is er te beperkt voor. Als je echt wil OO-en ga dan een taal als Java of C# leren.
Tsja sorry, maar dat is niet helemaal m'n bedoeling :)

Nouja vraag ff veranderen : Doe ik dit allemaal goed, is het dus (zover dat kan met PHP) een beetje OO ?

  • Tomatrix
  • Registratie: Juni 1999
  • Laatst online: 27-02-2025
Oh, ok.
Ik zou ff het e-mail adres checken op correctheid of er een aparte e-mail klasse van make.
Ook zou ik je SQL en connectie statements in een aparte klasse zetten zodat je snel van database kan wisselen.

En tsja, om het echt mooi te maken...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik vind het eigenlijk al wel een aardig begin :) . Je kunt inderdaad nog wat meer zaken scheiden in aparte klassen, maar je maakt in ieder geval geen grote fouten of rare constructies. Ga zo door dus :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Mafioso
  • Registratie: November 2000
  • Laatst online: 14:50
Maar is het ook nuttig om dit verder te bouwen?, met een paar normale functions kom je r ook wel. En al die get en set functions die ik hier heb gemaakt, het lijkt allemaal zo loos, maar dat zal later nog wel echt handig zijn.

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 27-08 21:32
Op zaterdag 23 februari 2002 01:42 schreef Mafioso het volgende:
Maar is het ook nuttig om dit verder te bouwen?, met een paar normale functions kom je r ook wel. En al die get en set functions die ik hier heb gemaakt, het lijkt allemaal zo loos, maar dat zal later nog wel echt handig zijn.
Het voordeel van al die getters en setters is dat je de complete interne representatie van een class kan veranderen(om snelheidsredenen bijv., maar dit is niet zo relevant in PHP), zonder dat je ook maar één stukje code buiten de class zelf hoeft te veranderen. Dit is juist één van de voordelen van OOP.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Ik zie niet direct zware fouten ofzo, maar wat ik wel mis (maar dat zal waarschijnlijk eerder aan PHP liggen dan aan u), dat zijn de access modifiers.
Eén van de principes van OOP is 'data hiding'. Dwz dat bepaalde members niet toegankelijk mogen zijn buiten de class. Ik denk in uw voorbeeld aan 'naam', 'passwoord' enz. Die zouden moeten 'private' zijn en dan uw getters en setters 'public'. Nu hebben ze waarschijnlijk allemaal dezelfde access modifier (het zal wel 'public' zijn).

Wat ik ook niet zou doen is, die array met foutmeldingen als class-member maken. Nu heeft ieder object die je van die class instantieert geheugen gereserveert voor die array, en die is voor ieder object toch hetzelfde. Die kan je dus best static maken.

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Whoops.
Mijn broer heeft blijkbaar niet uitgelogd. Die post van -Avalanche- is eignelijk van mij.

https://fgheysels.github.io/


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op zaterdag 23 februari 2002 09:57 schreef -Avalanche- het volgende:
Ik zie niet direct zware fouten ofzo, maar wat ik wel mis (maar dat zal waarschijnlijk eerder aan PHP liggen dan aan u), dat zijn de access modifiers.
Eén van de principes van OOP is 'data hiding'. Dwz dat bepaalde members niet toegankelijk mogen zijn buiten de class. Ik denk in uw voorbeeld aan 'naam', 'passwoord' enz. Die zouden moeten 'private' zijn en dan uw getters en setters 'public'. Nu hebben ze waarschijnlijk allemaal dezelfde access modifier (het zal wel 'public' zijn).
Wat ik ook niet zou doen is, die array met foutmeldingen als class-member maken. Nu heeft ieder object die je van die class instantieert geheugen gereserveert voor die array, en die is voor ieder object toch hetzelfde. Die kan je dus best static maken.
Volgens mij ondersteund PHP beide niet :( Echter dat static zou je kunnen opvangen via een include. Maar dit lijkt me ontzettend smerig, dus je het het beste zo laten :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Op zaterdag 23 februari 2002 10:42 schreef Glimi het volgende:

[..]

Volgens mij ondersteund PHP beide niet :( Echter dat static zou je kunnen opvangen via een include. Maar dit lijkt me ontzettend smerig, dus je het het beste zo laten :)
Daarmee ook dat PHP niet de geschikte tool is om OOP aan te leren. Ga dan idd eerder voor C#, Java, Smalltalk, ... zoals eerder al vermeld was.

https://fgheysels.github.io/


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ja, ziet er wel goed uit hoor :)

zoals eerder gezegd: verwerk je DB etc. ook in een aparte class.

Je zult zien dat naarmate je classes beter worden, je projecten bij elkaar kan c/p-en... door hergebruik van je classes

Klaar voor een nieuwe uitdaging.


  • Mafioso
  • Registratie: November 2000
  • Laatst online: 14:50
Op zaterdag 23 februari 2002 11:00 schreef chem het volgende:Je zult zien dat naarmate je classes beter worden, je projecten bij elkaar kan c/p-en... door hergebruik van je classes
Ja dat leek mij ook, wel erg handig natuurlijk, het kost je in het begin misschien wat meer tijd, maar dat bespaar je later.

En wat betreft die db access zooi, het was ook mij plan om daar een aparte class voor te maken/zoeken, ik dacht dat r in een artikel over OOP @ phpbuilder wel een goede stond.

[edit]Hmmm ik zie dat artikel ff niet meer, kweet niet meer waar die stond |:( .. nouja ik vind hem wel weer.

  • -RenE-
  • Registratie: September 2001
  • Laatst online: 09-09 19:04
Op zaterdag 23 februari 2002 13:03 schreef Mafioso het volgende:

[..]


[edit]Hmmm ik zie dat artikel ff niet meer, kweet niet meer waar die stond |:( .. nouja ik vind hem wel weer.
Kijk een naar ADODB. Dit is een zeer uitgebreide DB class.
http://php.weblogs.com/ADODB

Alternatief is Metabase, die gebruikt wordt in BinaryCloud. De laatste opzet is ook zeer de moeite waard.

Andere tip voor gestructureerd programmeren in php in Fusebox voor PHP (http://groups.yahoo.com/group/PHP-fusebox/) en voor algemene info over de Fusebox methode van programmeren (www.fusebox.org).

Succes met programmeren :)
Pagina: 1