Wanneer een Class gebruiken

Overzicht

Sponsored by: Vacatures door Monsterboard

Glenn Vanthournout

Glenn Vanthournout

27/12/2019 17:05:25
Anchor link
Hallo,

Ik programmeer al 20 jaar en heb reeds behoorlijke platformen draaien, maar nog niet OOP.

Ik ken de theorie, weet wat een class en object is, constructor en destructor, private en public, enz...

Nu vind ik persoonlijk de aanzet tot OOP niet eenvoudig.
Bestaat er een website met enkele basis regels of iets dergelijks van wat in een class te steken, wnr een class te gebruiken, ...
Of kunnen jullie me hier wat tips geven daaromtrent?
 
PHP hulp

PHP hulp

24/12/2024 00:22:36
 
- Ariën  -
Beheerder

- Ariën -

27/12/2019 17:06:29
 
Adoptive Solution

Adoptive Solution

27/12/2019 17:43:22
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/12/2019 23:22:22
Anchor link
>> Wanneer een class gebruiken?

Altijd zou ik dan bijna willen roepen. Maar ik weet ook dat het inderdaad erg abstract is en daardoor best lang kan duren eer het lampje gaat branden. Probeer eerst eens het verschil uit te zoeken (helder te krijgen) tussen een class (de code) en een instantie van een class (ergens in het geheugen van de pc).
 
Rob Doemaarwat

Rob Doemaarwat

28/12/2019 19:24:46
Anchor link
Heel ander voordeel van het gebruik van classes (nog buiten het technische/organisatorische aspect) is dat je gebruik kunt maken van autoloading. Dat scheelt wel zoveel gedoe met bijhouden wat je nou al wel/niet ge-include hebt, en dan maar weer naar include_once moet grijpen omdat een bestand de ene keer al wel, maar de andere keer nog niet is ge-include. Uiteindelijk ga je dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

class Helpers{

  public static function fooBar(){
    //...
  }

}


?>

En dan kun je dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

require(__DIR__ . '/../vendor/autoload.php'); //autoloader laden; de enige "include" die je hoeft te doen

\Helpers::fooBar(); //kijk mam, zonder include!

?>
 
DonutsNL Donut

DonutsNL Donut

29/12/2019 14:12:08
Anchor link
Hi Glenn,

Een classe kun je het beste zien als een vorm die je helpt om dingen te structureren. Welke structuur en samenhang je daarna het beste kunt creëren met deze classen is natuurlijk afhankelijk van wat je probeert te bereiken. Ik heb zelf best moeite met het idee dat je daarbij aan allerlei 'regels' moet voldoen. Ik zie programmeren als een creatief vak.

Wel zijn er natuurlijk structuren die zich over tijd hebben bewezen. Daarom zijn ze zinvol om te hergebruiken. Hierbij is het wel zaak dat je eerst goed begrijpt waarom een specifieke structuur zo goed werkt en in welke specifieke situatie. Ook is het belangrijk te begrijpen welke beperkingen de toepassing ervan met zich meeneemt.

Deze bewezen structuren worden ook wel 'design patterns' genoemd. De onderstaande link beschrijft verschillende van deze patronen, wanneer ze in te zetten en wat de beperkingen zijn. Het is aan te raden verschillende sites te raadplegen om een goed beeld te krijgen.

Cheers en groet, Donuts.

https://sourcemaking.com/design_patterns
Gewijzigd op 29/12/2019 14:15:49 door DonutsNL Donut
 
Heidenreich Damaris

Heidenreich Damaris

26/08/2021 11:23:48
Anchor link
Can you please explain to me why and when should we use classes ? What are the benefits of using classes ? When I want to write something how can i say "Ah yes, it's time to use classes" ? Thank you for your time


myccpay account
Gewijzigd op 27/08/2021 11:11:58 door Heidenreich Damaris
 
- Ariën  -
Beheerder

- Ariën -

26/08/2021 11:24:47
Anchor link
See the posts above. :-)
 

26/08/2021 20:42:51
Anchor link
Classes gebruiken voor object georiënteerd programmeren (OOP) faciliteert een tijdgeest, namelijk die van evolutie. Het geeft een antwoord op de vraag hoe de relatie tussen code en data geregeld moet zijn, wil het schaalbaar zijn. OOP is zeker niet het enige antwoord, en ik heb het idee dat er steeds meer kritiek op OOP is gekomen.

OOP heeft nadelen, zoals het 'diamond problem' (niet in PHP), en grotere en langzamere code vanwege overerving, terwijl meestal niet alles gebruikt wordt.
Er is bijvoorbeeld een reden waarom besturingssystemen niet in C++ worden geschreven, maar in C.
Een ander mooi voorbeeld is de taal Rust, die onder meer Behavioural Programming ondersteunt, met traits als type van argumenten van functies. Er zijn dus vele mogelijkheden.

Terug naar PHP, waar een singleton een veelgebruikt patroon is voor een verbinding met een databank. Dit antipatroon (althans, voor OOP) bewijst dat niet alles in OOP hoeft. Voor php-fpm, waarin de typische setup is dat een programma een enkele thread heeft, en bij elk HTTP request opnieuw wordt uitgevoerd, is OOP eigenlijk niet nodig. Een voorbeeld is de PHP code van het project MantisBT.
Toch wordt OOP wel veel gebruikt, en worden lapmiddelen als traits gebruikt om enkele nadelen van OOP te verhelpen. Je kunt in PHP zelfs asynchroon programmeren via een soort promises, met de nieuwe feature van generators. Een raamwerk hiervoor is AMPHP.

Dus wanneer moet je wel of geen class gebruiken? Met PHP is er geen noodzaak, het kan allebei. Als je classes gebruikt zijn er wel veelgebruikte tools om je programmeren in een goede richting te helpen, zoals unit testen (je moet dan nog steeds integratietests doen). Aan de andere kant is er gedoe met dependency injection, en zijn er allerlei manieren om dat enigszins elegant op te lossen.
Ik heb dus geen goed antwoord op de vraag. Zelf programmeer ik wel via OOP, maar ik loop tegen de nadelen aan, zoals dat je zeker in PHP code kunt gaan zien als data, en gaat uitlezen via Reflection, wat hele trage code oplevert. OOP in PHP maakt mijns inziens de code minder makkelijk te porteren naar een andere taal, omdat OOP in PHP zijn eigen vorm heeft.

Als ik nu opnieuw OOP zou moeten mogen leren, dan zou ik voor Rust gaan.
 
- Ariën  -
Beheerder

- Ariën -

23/10/2021 08:16:56
Anchor link
Gesloten na spamkick.
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.