[oop] overlap in classes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

05/03/2014 19:32:50
Quote Anchor link
M'n laatste vraag voor vandaag (hoop ik).

Ik heb een aantal classes waarin ik data opsla (bijv. een class waar de POST data in staat, of een class waar alle paden in staan, of waar de configuratie in staat). Deze classes hebben een aantal dezelfde methodes. Het gaat dan om een get(), set() en has() method.

Bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$config
->set('foo');
if ($config->has('foo')) {
  echo $config->get('foo');
}

?>

Nu is het volgens het DRY principe niet goed om code te herhalen. Hoe kan ik dit het beste oplossen?

Ik dacht zelf aan een aparte class (bijv. DataCollection) waar dan de get, set en has method in zitten, maar misschien zijn er nog andere/beter mogelijkheden?

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

class DataCollection {

  private $data;

  public function get($id) {

  }


  public function has($id) {

  }


  public function set($id, $value) {

  }

}


class Config extends DataCollection {

}


?>

Is dit de juiste manier?
Gewijzigd op 05/03/2014 19:33:59 door Ozzie PHP
 
PHP hulp

PHP hulp

28/12/2024 21:34:27
 
Milo S

Milo S

06/03/2014 08:29:50
Quote Anchor link
Waarom zou je niet gaan voor een abstracte klasse waar de gelijke method s in staan? Zo kun je indien nodig nog uitbreiden? Dat heb ik ook zo gedaan bij mijn DataMappers. Alle CRUD method s waren hetzelfde, er moest alleen steeds een andere factory method in...
 
Ozzie PHP

Ozzie PHP

06/03/2014 12:54:42
Quote Anchor link
Hey Milo,

Wat is dan het verschil met mijn oplossing hierboven en jouw oplossing met een abstracte class?

Bij mij kan ik de DataCollection class ook "los" gebruiken, dus dat lijkt me dan handiger dan een abstracte class?
 



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.