[oop] dynamic class met static properties?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

06/05/2014 22:16:57
Quote Anchor link
Hey guys,

Worden er eigenlijk wel eens dynamische classes met static properties gebruikt?

Stel je hebt bijv. meerdere webshops die gebruik maken van één en dezelfde product class. En nu wil je bijv. achter de productnaam ook de naam van de webshop hebben. Is zoiets als dit dan gebruikelijk?

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
19
20
21
22
23
<?php
class Product {

  static private $shop;

  private $name;

  static public funtion setShop($shop) {
    self::$shop = $shop;
  }


  public funtion getName() {
    return $this->name . self::$shop;
  }

}


Product::setShop('OzzieWinkel');

$product = new Product(12);
echo $product->getName(); // PhpBoek OzzieWinkel

?>

Is zoiets gebruikelijk?
 
PHP hulp

PHP hulp

27/11/2024 11:15:05
 
Wouter J

Wouter J

06/05/2014 22:48:52
Quote Anchor link
Hohohohooo! :) Waar gaan we nu heen met het SOLID principe? Waar is het scheiden van verantwoordelijkheden gebleven?

Het product doet nu 3 dingen:
- Vasthouden gegevens over het product
- Vasthouden gegevens over de shop
- Presenteren van het product

Dat moeten dus 3 klassen worden, niet 1.

Maar waarschijnlijk is dit niet je vraag, maar gewoon weer een voorbeeldje die noch wal noch sloot raakt. Je krijgt hierdoor dus compleet verkeerde antwoorden en wij verspillen weer eens wat minuten aan reageren...

Dus ga ik op de goede gok je vraag herformuleren: Je hebt gister van Dos een nieuwe methode geleerd die gebruikt maakt van statics. Die wil je nu graag overal toepassen, maar je vraagt je af of dat eigenlijk wel goed is, die statics mengen met andere klassen.

En om dan maar meteen met de deur in huis te vallen en jouw (mijn) vraag meteen te beantwoorden: Nee, dat is niet mooi om in dit voorbeeld te doen. Dos zijn voorbeeld moet je niet overal gaan toepassen. Eigenlijk vind ik het ook helemaal niet mooi, omdat je klasse dan afhankelijk is van een init method. Zoiets moet je in de constructor plaatsen.
 
Ozzie PHP

Ozzie PHP

06/05/2014 23:24:51
Quote Anchor link
Wouter, lees je eigen berichtje eens terug, en tel voor de grap eens even de AANNAMES die je doet ;)

>> die noch wal noch sloot raakt

Kant noch wal is de uitdrukking.

>> Het product doet nu 3 dingen:
- Vasthouden gegevens over het product
- Vasthouden gegevens over de shop
- Presenteren van het product

Dat laatste doet het in ieder geval niet.

Jij doet mijn vraag af als een rare vraag, maar ik meen een dergelijke constructie weleens gezien te hebben. Als ik me niet vergis werd daarbij zelfs een heel shop-object in een static property gestopt. Nu lijkt me dat niet een heel strak plan, maar ik vraag me dus af of het wel eens voorkomt dat er dynamische classes worden gebruikt waar een statische property instaat, om wat voor reden dan ook. Komt zoiets wel eens voor of niet?

Mijn vraag heeft verder niks te maken met de init method.

>> Eigenlijk vind ik het ook helemaal niet mooi, omdat je klasse dan afhankelijk is van een init method. Zoiets moet je in de constructor plaatsen.

Dat gaat een beetje lastig bij een statische class nietwaar?
Gewijzigd op 06/05/2014 23:25:23 door Ozzie PHP
 
Wouter J

Wouter J

06/05/2014 23:37:38
Quote Anchor link
>> Dat laatste doet het in ieder geval niet.

Dat doet het wel: "En nu wil je bijv. achter de productnaam ook de naam van de webshop" Het betreft hier dus hoe we het product willen presenteren op de website, namelijk doormiddel van de webshop naam en product naam. Zoiets moet dus niet afgehandeld worden in de Product klasse, die heeft al een andere verantwoordelijkheid.

>> Komt zoiets wel eens voor of niet?

Dat ligt aan het voorbeeld wat je geeft. Met dit voorbeeld, ja het komt misschien wel voor, maar het is niet goed.

>> Dat gaat een beetje lastig bij een statische class nietwaar?

Zie hier ook mijn afkeer tegen statische klassen.

Merk overigens op dat ik je helemaal niet probeerde aan te vallen, ik probeerde je 2 dingen te vertellen: 1) jou voorbeeld is geen goed OO, 2) geef geen voorbeelden, geef je werkelijke probleem
 
Ozzie PHP

Ozzie PHP

06/05/2014 23:42:31
Quote Anchor link
Het was puur een interesse vraag Wouter. Soms heb je ergens niet een probleem bij, maar wil je enkel weten of iets bestaat of voorkomt.

>> Het betreft hier dus hoe we het product willen presenteren op de website

Ik snap wat je bedoelt. In mijn vraag ging ik er dus vanuit dat de shopnaam een onderdeel van de productnaam is. Het wordt dus niet op deze wijze gepresenteerd, maar is gewoon de daadwerkelijke naam. En om dat te bereiken voeg je dan die statische property toe.

Anyhow. Het komt dus niet of in ieder geval niet vaak voor. Dat was het antwoord op mijn vraag.
 



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.