Nieuw in OOP, klein vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gerard Nijboer

Gerard Nijboer

18/02/2011 14:50:43
Quote Anchor link
Hey,

Ik ben sinds deze week beginnen met OOP in PHP.
Heb een tijdje geleden in Java moeten programmeren, maar ben het al zo goed als verleerd.

Nu heb ik een object Intranet, die meerdere object aanmaakt, waaronder: Database en Configuration.
Stel nou dat ik vanuit het object Configuration een methode uit het object Database wil aanroepen, hoe doe ik dat?

Ik kan maar nergens op het internet echt een antwoord vinden op die vraag.

Op het gebied van performance lijkt het me niet verstandig om in het object Configuration ook nog een object Database aan te maken, want het object Database maakt een mysql-connectie, en twee links per oproep lijkt me overbodig, toch?

Wie helpt mij uit de brand?

Bedankt,
Gerard
 
PHP hulp

PHP hulp

22/12/2024 10:17:43
 

18/02/2011 15:36:25
Quote Anchor link
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
<?php
class dinges
{
private $database;

public function __construct(Database $database)
{

$this->database = $database;
}


public function doe_wat_met_database()
{

$this->database->roep_methode_aan();
}


?>

Zoiets.
 
Gerard Nijboer

Gerard Nijboer

20/02/2011 00:09:50
Quote Anchor link
Oké, dat klinkt logisch: Je stuurt in de parameters een verwijzing naar het object $database mee, zodat die klasse ook daar bij mag, right?

Maar stel nou dat ik vele andere klassen wil laten verwijzen, moet ik dan werkelijk al die klassen als verwijzing in de parameters meegeven, of is er toevallig een andere oplossing?
Ik zoek een oplossing waarmee ik, als object van klasse Intranet zijnde, bij de eigenschappen van Intranet kan.
Kan ik soms het (hoofd-)object Intranet meegeven en dan naar zijn object verwijzen?

Onderstaand een stukje van mijn code:

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
<?
class Intranet {
    public function Intranet() {
        $Configuration = new Configuration();
        $PageController = new PageController();
        $Configuration->doTest();
    }
}


class Configuration {
    public function doTest() {
        $this->PageController->writeTest();
    }
}


class PageController {
    public function writeTest() {
        echo "TEST!";
    }
}

?>


Snap je ongeveer wat ik probeer te doen?

Toevoeging op 20/02/2011 00:34:42:

Jeetje zeg, het heeft even mogen duren, maar ik ben er uit!
Ik zal mijn 'bijdrage' aan de community doen door mijn broncode te delen:

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
<?

error_reporting(E_ALL);
ini_set("display_errors", 1);

class Configuration {
    public $Boss;
    
    public function __construct(Intranet $Boss) {
        $this->Boss = $Boss;
    }

    
    public function doTest() {
        $this->Boss->PageController->writeTest();
    }
}


class PageController {
    public function writeTest() {
        echo "TEST!";
    }
}


class Intranet {
    private $Configuration;
    public $PageController; // Zet deze naar private om te voorkomen dat andere klassen er gebruik van kunnen maken
    public function Intranet() {
        $this->Configuration = new Configuration($this);
        $this->PageController = new PageController();
        $this->Configuration->doTest();
    }
}

$Intranet = new Intranet();
?>
 



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.