[PHP] Beginnen met OOP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Droned
  • Registratie: November 2007
  • Laatst online: 21-11-2023
Hallo,

Ik ben van plan om te starten met het programmeren volgens de OOP standaard, omdat ik ook al vertrouwd ben met c++ lijkt me dit makkelijker te gebruiken, om dan zo een beter overzicht te krijgen over mijn code.

Nu is mijn vraag of het bij elke website beter is om OOP te werken?

Groetjes,

Dries

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-07 16:00

Johnny

ondergewaardeerde internetguru

Zowel PHP als C++ zijn niet echt object georienteerd, het is er later maar een beetje tegenaan geplakt, waardoor het voor iemand die er mee begint misschien niet erg handig of logisch zal aanvoelen. Je website zelf zal er niet beter of sneller van worden, je kan het wel gebruiken om je code voor jezelf overzichtelijker en makkelijker herbruikbaar te maken voor andere projecten en patronen (patterns) gebruiken die je in andere talen ook kan toepassen. Waar je wel voor moet oppassen is dat je dingen niet onnodig complex maakt door onnodige abstractie toe te voegen, het kan ook handig zijn om een framework zoals Zend te gebruiken, en anders om alleen maar te kijken en van te leren.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Droned
  • Registratie: November 2007
  • Laatst online: 21-11-2023
is het dan misschien beter om met templates te werken als ik overzichtelijk wil werken. Het probleem is wanneer ik nu een project af heb, en ik een nieuw krijg dat ik dan steeds weer vanaf nul moet beginnen terwijl er altijd dezelfde dingen terugkomen zoals:

- SELECT statements
- UPDATE statements
- DELETE statements

Nu is het grootste deel van het werk, al deze dingen opnieuw schrijven, dus daarom ben ik op zoek naar een oplossing, is OOP hier een goede oplossing voor?

Is dit bijvoorbeeld nuttig:

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
<?php

class categorie{
    public $naam;
    public $beschrijving;
    public $id;
    
    //constructor
    function __construct()
    {
        
    }
    // getters en setters
    function MaakAan($naam)
    {
        $sql = "INSERT INTO categorie(naam) VALUES ('".$naam."')";
        $result = mysql_query($sql);
        echo "succesvol aangemaakt";
    }
    
    function setcategorie($naam,$id)
    {
        $sql = "UPDATE categorie SET naam = '".$naam."' where id_cat = '".$id."'";
        $result = mysql_query($sql);
        echo "gewijzigd";
    }
    
    function getnaam( $id )
    {
        $sql = "SELECT name FROM categorie WHERE id_cat = '".$id."'";
        $result = mysql_query($sql) or die(mysql_error());
        $row = mysql_fetch_array($result);   
        echo $row['naam'];
    }
    
    function delete( $id )
    {
        $sql = "DELETE FROM categorie WHERE id_cat = '".$id."'";
        $result = mysql_query($sql) or die(mysql_error());   
        echo "De categorie is verwijderd";
    }
    
};
?>

[ Voor 51% gewijzigd door Droned op 26-12-2008 22:34 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

PHP:
1
$result = mysql_query($sql) or die(mysql_error());
Als je OOP wilt gaan doen, hoort daar natuurlijk wel een correcte foutafhandeling bij, bovenstaande is een voorbeeld waarbij dat imo niet het geval is.

Je functienamen en commentaren, zou ik om diezelfde reden niet in het Nederlands doen, maar in het Engels.

[ Voor 37% gewijzigd door CH4OS op 26-12-2008 22:47 ]


Acties:
  • 0 Henk 'm!

  • Droned
  • Registratie: November 2007
  • Laatst online: 21-11-2023
GJtje schreef op vrijdag 26 december 2008 @ 22:45:
PHP:
1
$result = mysql_query($sql) or die(mysql_error());
Als je OOP wilt gaan doen, hoort daar natuurlijk wel een correcte foutafhandeling bij, bovenstaande is een voorbeeld waarbij dat imo niet het geval is.

Je functienamen en commentaren, zou ik om diezelfde reden niet in het Nederlands doen, maar in het Engels.
Ok dank je voor de tips, waarom eigenlijk de commentaren en namen in het engels doen?

En voor de rest, is dit dan nuttig gebruik van OOP?

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Droned schreef op vrijdag 26 december 2008 @ 22:59:
Ok dank je voor de tips, waarom eigenlijk de commentaren en namen in het engels doen?
Omdat iedereen dan je comments ook kan lezen en begrijpt waar je functies voor bedoeld zijn, die de functie-namen al lichtelijk laten zien.
En voor de rest, is dit dan nuttig gebruik van OOP?
Je werkt inderdaad met classes binnen OOP. Denk dan vooral ook aan de (engelstalige) benaming van classes. Maar het werkt het beste om van te voren dingen uit te denken. Ik zou bijvoorbeeld geen categorie / category hoofdclass aanmaken.

Dan zou ik bijvoorbeeld
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
class SQL
{
    function connectSQL($type='MySQL', $host, $user, $pass, $db)
    {
        // Connect to a SQL database
    }

    class category extends SQL
    {
        // Your stuff
    }
}
Oftewel: de algemene functies, zoals bijvoorbeeld het verbinden met een SQL database, de foutafhandeling (binnen SQL!) zou ik niet in een subclass gooien, omdat dat algemeen SQL is.
Wat niet algemeen SQL is, zijn je functies om je categorieën op te vissen uit die database... ;)

[ Voor 8% gewijzigd door CH4OS op 28-12-2008 11:59 ]


Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Beter dat je even bestaande object relational mapping patterns bekijkt zoals het ActiveRecord design pattern bekijkt voordat je je eigen "halve" ORM probeert te bouwen ;-) Je probleem met "weer vanaf 0 beginnen" is op te lossen door een goede framework te gebruiken. Pak een willekeurige PHP rails clone zoals Symphony en je begrijpt wat ik bedoel ;-)

Acties:
  • 0 Henk 'm!

  • Ciqniz
  • Registratie: Oktober 2002
  • Laatst online: 07-09-2023

Ciqniz

On the move...

GJtje schreef op vrijdag 26 december 2008 @ 23:41:
[...]
Omdat iedereen dan je comments ook kan lezen en begrijpt waar je functies voor bedoeld zijn, die de functie-namen al lichtelijk ten stellen.
Bullshit. Waarom zou je per definitie voor anderstaligen aan het programmeren zijn? Ik kom vaak zat in situaties terecht waarbij de software alleen door Nederlands-talige gebruikers wordt gebruikt en alleen in onderhoud is bij Nederlanders. En wat zie ik dan? Steenkolen Engels waar je totaal geen gehakt van kan maken. Wat moet je daar dan mee?

Ik zeg, gewoon lekker in het Nederlands programmeren als het kan. Of je moet heel erg zeker zijn van je zaak...

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-07 03:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Johnny schreef op vrijdag 26 december 2008 @ 22:09:
Zowel PHP als C++ zijn niet echt object georienteerd, het is er later maar een beetje tegenaan geplakt, waardoor het voor iemand die er mee begint misschien niet erg handig of logisch zal aanvoelen.
Sorry hoor maar echt onzin. C++ heeft alle OO eigenschappen om het een OO taal te maken. Dat het eigenlijk een hybrid taal is maakt het niet ineens minder geschikt om OOP erin te doen. En zelfs PHP heeft sinds versie 5 alle belangrijke eigenschappen aan boord voor OOP.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

.oisyn schreef op zondag 28 december 2008 @ 01:47:
Sorry hoor maar echt onzin. C++ heeft alle OO eigenschappen om het een OO taal te maken. Dat het eigenlijk een hybrid taal is maakt het niet ineens minder geschikt om OOP erin te doen. En zelfs PHP heeft sinds versie 5 alle belangrijke eigenschappen aan boord voor OOP.
offtopic:
Hoe is dat dan geregeld in PHP6, die men momenteel aan het bouwen is bij Zend? Ik had juist begrepen dat dat nog meer richting OOP gaat? :)

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-07 16:00

Johnny

ondergewaardeerde internetguru

.oisyn schreef op zondag 28 december 2008 @ 01:47:
[...]

Sorry hoor maar echt onzin. C++ heeft alle OO eigenschappen om het een OO taal te maken. Dat het eigenlijk een hybrid taal is maakt het niet ineens minder geschikt om OOP erin te doen. En zelfs PHP heeft sinds versie 5 alle belangrijke eigenschappen aan boord voor OOP.
Maar wel minder geschikt voor een beginner om object georienteerd er te leren werken, hoe het precies werkt en wat de achterliggende gedachte is als je voortdurend gebruik moet maken van globale functies en primitieve types en allerlei voorbeelden, documentatie en lesmateriaal wat ook geen object georienteerde code laat zien. En dan is het vaak ook nog eens zo dat het in dit soort hybride talen vaak sneller is met minder code vereist om niet object georienteerd te werken wat de beginner ook niet echt stimuleert.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

Anoniem: 26306

Beginnende programmeurs kunnen alleen procedureel denken. Die denken nog niet abstract.
Wat dat betreft ben ik het helemaal met je eens dat dat betekent dat je object georiënteerd programmeren beter kunt leren met bijvoorbeeld C# of Java dan met PHP.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-07 03:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik ben het daar niet mee eens. OOP is niet "met classes", maar dat is wel wat de beginner ermee doet. De vorige post van GJtje (no offense) met een SQL class is daar een mooi voorbeeld van. Het is alsnog procedureel opgezet, maar dan in een class gegoten zodat je in feite slechts een namespace hebt gecreëerd. Heeft weinig met OOP te maken. En dat zie je ook altijd in talen als C# en Java, dus feitelijk is er weinig gewonnen door een dergelijke taal te gebruiken.

[ Voor 44% gewijzigd door .oisyn op 28-12-2008 18:55 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

.oisyn schreef op zondag 28 december 2008 @ 18:49:
Ik ben het daar niet mee eens. OOP is niet "met classes", maar dat is wel wat de beginner ermee doet. De vorige post van GJtje (no offense) met een SQL class is daar een mooi voorbeeld van. Het is alsnog procedureel opgezet, maar dan in een class gegoten zodat je in feite slechts een namespace hebt gecreëerd. Heeft weinig met OOP te maken. En dat zie je ook altijd in talen als C# en Java, dus feitelijk is er weinig gewonnen door een dergelijke taal te gebruiken.
Ben zelf ook nog niet helemaal thuis in PHP en OOP. Dus vandaar dat mijn voorbeeldje wellicht nog niet je van het is. Hoe zou jij dan een dergelijk iets in correct OOP smijten en heb je daar een stukje voorbeeldcode bij? :) Dan weet ik misschien waarom ik verkeerd denk.

Acties:
  • 0 Henk 'm!

Anoniem: 28333

GJtje schreef op zondag 28 december 2008 @ 19:09:
[...]
Ben zelf ook nog niet helemaal thuis in PHP en OOP. Dus vandaar dat mijn voorbeeldje wellicht nog niet je van het is. Hoe zou jij dan een dergelijk iets in correct OOP smijten en heb je daar een stukje voorbeeldcode bij? :) Dan weet ik misschien waarom ik verkeerd denk.
Voor mij was dit toen ik met OO begon te programeren ook een raadsel. Zoals een aantal hierboven zeggen: kijk eens hoe de grote frameworks het doen. Ik ben begonnen met Zend Framework en naarmate je daar wat grotere applicaties bouwt móet je haast wel goed OO gaan werken, plus de code die ze al aanleveren is volledig OO en zit goed in elkaar. Hun database abstractie lijkt op het eerste gezicht (voor een beginner) erg omslachtig, maar als je er mee leert te werken is het fijn.
Ik vind hun ORM mapping trouwens niet heel sterk, voor dingen uit meerderen tabellen schrijf ik liever zelf even een functie met query in mijn model (zit je wel met het gevaar van SQL dialecten) dan dat ik hun methoden gebruik.

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Ciqniz schreef op zondag 28 december 2008 @ 01:06:
[...]


Bullshit. Waarom zou je per definitie voor anderstaligen aan het programmeren zijn? Ik kom vaak zat in situaties terecht waarbij de software alleen door Nederlands-talige gebruikers wordt gebruikt en alleen in onderhoud is bij Nederlanders. En wat zie ik dan? Steenkolen Engels waar je totaal geen gehakt van kan maken. Wat moet je daar dan mee?

Ik zeg, gewoon lekker in het Nederlands programmeren als het kan. Of je moet heel erg zeker zijn van je zaak...
Sorry hoor, maar ik sla mede-programmeurs echt als ik variabelen, functie namen en comments in het Nederlands tegenkom. Dat moet écht verboden worden. Goed voorbeeld; Ons team is recentelijk uitgebreid met een Poolse medewerker. Zal lekker zijn als die ook lekker in het Pools blijft programmeren 8)7 Je kunt dan beter je mede programmeurs een goede cursus Engels geven lijkt me. Daarbij komt nog, Hoe klein is je wereld als je geen of slecht Engels kan als programmeur?

@Droned: Zoek eens een aantal populaire OO design patterns op Wikipedia en lees ze even door. Je hoeft ze écht niet allemaal te gebruiken maar zo krijg je wel een goed idee van de verschillende 'best practices' en OO ontwikkelmethoden die er zijn.

O.a. voor jouw Select, delete, update verhaal heb ikzelf een O/R mapper / ActiveRecord geschreven (zie sig) Dat neemt bijna al je handmatige SQL schrijven uit handen :)

Stop uploading passwords to Github!

Pagina: 1