OOP functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruben  de Man

Ruben de Man

12/02/2012 12:33:46
Quote Anchor link
Hallo,
Ik ben net begonnen met OOP in php, alleen ik stuiter op een probleempje ik heb de volgende code om een object te maken en te laten zien op de pagina:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?
class persoon { //de naam van de class
    //de 3 eigenschappen van de persoon

    public $naam;
    public $lftd;
    public $brp;
    
    // hieronder staan de methodes
    public function geef_naam(){
        return $this->naam;
    }

    
    public function bepaal_naam($nieuwenaam){
        $this->naam = $nieuwenaam;
    }

    
    //------
    
    public function geef_lftd(){
        return $this->lftd;
    }

    
    public function bepaal_lftd($nieuwelftd){
        $this->lftd = $nieuwelftd;
    }

    
    //------
    
    public function geef_brp(){
        return $this->brp;
    }

    
    public function bepaal_brp($nieuwebrp){
        $this->brp = $nieuwebrp;
    }
}


//nieuwe objecten maken
$a = new persoon();
$a -> bepaal_naam('Annemieke');
$a -> bepaal_lftd('45');
$a -> bepaal_brp('webdeveloper');
$b = new persoon();
$b -> bepaal_naam('Anne');
$b -> bepaal_lftd('56');
$b -> bepaal_brp('gamedeveloper');




//de methode gebruiken
echo "<table border='0' width='200' border='1'>";
 echo " <tr bgcolor='#00FF00'>";
 echo "   <td>Naam</td>";
 echo "   <td>Leeftijd</td>";
 echo "   <td>Beroep</td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td>".$a->geef_naam()."</td>";
    echo "<td>".$a->geef_lftd()."</td>";
    echo "<td>".$a->geef_brp()."</td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td>".$b->geef_naam()."</td>";
    echo "<td>".$b->geef_lftd()."</td>";
    echo "<td>".$b->geef_brp()."</td>";
  echo "</tr>";
echo "</table>";

?>


Alleen wil nu een formulier er bij maken om naam, leeftijd en beroep in de tabel in te voegen, maar de moeilijkheid is juist dat de functie de objecten ook moet onthouden om de pagina te kunnen refreshen...
Ik hoop zo snel mogelijk op een oplossing;)

groetjes!
 
PHP hulp

PHP hulp

01/12/2024 01:36:03
 
Wouter J

Wouter J

12/02/2012 13:01:53
Quote Anchor link
Even wat OO tips voordat ik antwoord geef:
- begin een classnaam met een hoofdletter, dus Persoon
- script in het engels, dit is algemeen. Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
class Person
{
  public function getName()
  {

    return $this->name;
  }
}

?>

- getallen zijn getallen, geen strings. Gebruik dus 12 en niet '12'
- Maak properties niet public. Dan kan je ze altijd aanpassen en dat wil je niet:
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
<?php
class Person
{
  public $name;
  public function setName( $name )
  {

     $this->name = ucfirst($name); // zorg dat de naam altijd met een hoofdletter begint
  }

  public function getName()
  {

     return $this->name;
  }
}

$wouter = new User;
$wouter->setName('wouter');
echo $wouter->getName(); // Wouter

$wouter->name = 'Ruben'; // omdat name public is kunnen we hem bewerken
echo $wouter->getName(); // Ruben
?>

Maak daarom properties altijd protected of private en niet public
- Gebruik uitgebreide comments, zodat alles duidelijk wordt en je het later simpel naar een documentatie kan opzetten met bijv. http://phpdoc.org/ Een voorbeeld van juiste comments: http://www.phphulp.nl/php/script/classes/phpbench/1936/researchphp/1708/
- geef dingen die nodig zijn voor de class, als naam leeftijd en beroep in dit geval, mee aan de constructor.

Wat andere tips:
- gebruik geen inline CSS als bgcolor="" of style=""

De oplossing is door gegevens op te slaan in een database. Vervolgens kun je die dan met objecten opslaan. Een voorbeeldje van de procedurele code (dus zonder classes) die je wilt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$wouter
= new Person('Wouter', 25, 'Webdeveloper');
$wouter->save(); // sla de gebruiker op

$ruben = User::getById(2); // haal de user met id = 2 op
echo $ruben->getName(); // echoëd de naam van de user

?>

Een voorbeeldje, dat misschien nog ietwat moeilijk is, over hoe jou classes er dan uit zien kun je hier vinden: http://www.phphulp.nl/php/forum/topic/applicatie-naamgeving/81370/3/#578116
 



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.