[oop] constructor als "uitvoerder"?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

Ozzie PHP

Ozzie PHP

19/05/2014 14:54:34
Quote Anchor link
Oké... ik ga er mee aan de slag. Thanks allemaal!
 
PHP hulp

PHP hulp

28/03/2024 20:40:02
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/05/2014 17:24:37
Quote Anchor link
Ozzie, PHP is niet de enige OOP taal. En er zijn nogal wat zaken die in PHP wél werken maar in een striktere taal absoluut niet. En onderstaand voorbeeld is er één van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
class Foo
{
    private bar = 1; // <-- stom genoeg kan dit dus in PHP maar in andere talen weer niet.
}
?>

In andere talen heb je hiervoor dus persé een constructor nodig, en daar is dat ding dus voor bedoeld.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class Foo
{
    private bar;

    function
__construct()
    {

        $this->bar = 1;
    }
}

?>
 
Wouter J

Wouter J

19/05/2014 17:51:11
Quote Anchor link
>> Wanneer kies je voor een statische aanroep?

Wanneer je geen klasse hebt, maar een functie.
 
Ozzie PHP

Ozzie PHP

19/05/2014 20:32:19
Quote Anchor link
>> Wanneer je geen klasse hebt, maar een functie.

Een statische method is ook onderdeel van een class toch?
 
Phpnuke r

phpnuke r

19/05/2014 22:10:42
Quote Anchor link
Een static function kan op zichzelf functioneren, net als een functie die je gewent bent in php. Verder zitten er regels aan vast en kan het dus niet geheel functioneren zoals je met andere functies in de class zou doen. Het is dus niet geheel onderdeel van de classe. Je kan dus niet direct gebruik maken van andere public classes. Dit geeft bijvoorbeeld een error omdat er een andere functie word aangeroepen uit dezelfde classe:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

class FileClass {

public function foo() {
    echo 'hoi';
}


public static function test(){
echo $this->foo();
    echo 'doei';
}

}

FileClass::test();


?>
Gewijzigd op 19/05/2014 22:18:39 door phpnuke r
 
Ozzie PHP

Ozzie PHP

19/05/2014 22:16:20
Quote Anchor link
Uhm...eh... het kan handiger zijn, maar het gaat uiteindelijk om de functionaliteit :)

Enkel en alleen voor een statische method kiezen omdat dat handiger is voor je editor lijkt me ook niet helemaal juist...
Gewijzigd op 19/05/2014 22:16:39 door Ozzie PHP
 
Phpnuke r

phpnuke r

19/05/2014 22:26:19
Quote Anchor link
De functionaliteit blijft hetzelfde, het organiseren van je code en bovendien de leesbaarheid is erg belangrijk. Daar hoort code doorlopen ook bij ;)(Ik heb overigens mijn post veranderd omdat ik te lui was om de topic te doorlezen :P)
 
Ozzie PHP

Ozzie PHP

19/05/2014 22:29:28
Quote Anchor link
>> Ik heb overigens mijn post veranderd omdat ik te lui was om de topic te doorlezen :P

Lol... je hebt 'm flink aangepast ;)
Maar uiteindelijk gaat het dus om de situatie waarin je iets toepast.
 
Phpnuke r

phpnuke r

19/05/2014 22:34:00
Quote Anchor link
Quote:
Lol... je hebt 'm flink aangepast ;)

:)

Quote:
Maar uiteindelijk gaat het dus om de situatie waarin je iets toepast.

Als je object oriented programmeert wil je dat je code ook meer aan elkaar gelijk is. Als je normale functies en classes door me kaar gebruikt is gewoon incorrect.

Wanneer je kleine acties onderneemt, die je een functie het werkt zou laten doen, gebruik je een static. Wanneer je een 'object' wil maken welk op verschillende manieren kan worden gebruikt dan gebruik je een classe.
Gewijzigd op 19/05/2014 22:58:22 door phpnuke r
 
Ozzie PHP

Ozzie PHP

19/05/2014 23:26:34
Quote Anchor link
>> Wanneer je kleine acties onderneemt, die je een functie het werkt zou laten doen, gebruik je een static. Wanneer je een 'object' wil maken welk op verschillende manieren kan worden gebruikt dan gebruik je een classe.

Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?
 
Reshad F

Reshad F

20/05/2014 00:14:24
Quote Anchor link
Wanneer je een factory class hebt of een singleton. Dus zoals Wouter waarschijnlijk zou zeggen aangezien je de singleton toch niet gebruikt alleen voor een factory. ( oftewel wanneer je vanaf overal een instance wilt instantieren en wilt dat hij overal gelijk is )
 
Ozzie PHP

Ozzie PHP

20/05/2014 00:17:36
Quote Anchor link
@Reshad: en wat vind je dan van de oplossing van NOLot: http://www.phphulp.nl/php/forum/topic/oop-constructor-als-uitvoerder/94938/2/#681630

Dat vind ik zelf ook wel heel mooi. Het is hier meteen duidelijk wat je doet, en je kunt verder toch niks doen met het request object, behalve het aanroepen van de execute method.
Gewijzigd op 20/05/2014 00:18:28 door Ozzie PHP
 
Phpnuke r

phpnuke r

20/05/2014 10:24:01
Quote Anchor link
Quote:
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?

Dan ga je inderdaad geen complete classe schijven, en gebruik je een static. Met classe bedoel ik dan ook het verzamelwoord.
 
Ozzie PHP

Ozzie PHP

20/05/2014 23:38:00
Quote Anchor link
>> Dan ga je inderdaad geen complete classe schijven, en gebruik je een static. Met classe bedoel ik dan ook het verzamelwoord.

Wat bedoel je nu precies? Een static method is een onderdeel van een class? Ik begrijp niet helemaal wat je bedoelt...
 
Wouter J

Wouter J

20/05/2014 23:54:07
Quote Anchor link
Een static is onderdeel van de class, maar niet van het object
 
Ozzie PHP

Ozzie PHP

20/05/2014 23:56:19
Quote Anchor link
Precies, maar er is dus altijd sprake van een class.
 
Phpnuke r

phpnuke r

21/05/2014 21:36:13
Quote Anchor link
Quote:
Dan ga je inderdaad geen complete classe schijven, en gebruik je een static. Met classe bedoel ik dan ook het verzamelwoord.



>>

Quote:
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?


Klopt, Dan ga je inderdaad geen complete classe schijven, en gebruik je een static function. Met een classe bedoel ik dan ook het verzamelwoord (object).
Gewijzigd op 21/05/2014 21:36:46 door phpnuke r
 
Ozzie PHP

Ozzie PHP

21/05/2014 21:47:25
Quote Anchor link
>> Klopt, Dan ga je inderdaad geen complete classe schijven, en gebruik je een static function. Met een classe bedoel ik dan ook het verzamelwoord (object).

Euh... een object is dan net weer wat anders dan een class... :(
Een object is een instantie van een class.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$class
  = 'Foo';
$object = new $class;

?>
 

Pagina: « vorige 1 2 3



Overzicht Reageren

 
 

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.