[php5] Object ander bestand binnen klasse gebruiken

Pagina: 1
Acties:

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 07:41
Hallo,

Ik ben op dit moment bezig met het testen van de mogelijkheden die classess mij bieden binnen php5.
Ik stuit echter op een probleem.

Voor het sql gebeuren heb ik een klasse gemaakt die de connectie maakt en waarmee ik query's uit kan voeren. Query's uitvoeren kan ik ook gewoon met mysql functie's doen, maar als ik dit binnen 1 klasse doe heb ik de mogelijkheid om error's goed te kunnen opvangen en analyseren.

Verder heb ik een klasse session die een aantal controles uit voert.
Wat het verder doet is niet van belang op dit moment.

Mijn probleem is alsvolgt.

Ik heb de volgende bestanden:
class_session.php
class_database.php
pagina.php

In pagina.php doe ik het volgende:
Ik include beide classes in pagina.php
In pagina.php maak ik dan een nieuw object aan voor de database (bijv: $objDatabase).
Mijn intensie was om dit object overal te gebruiken (1 connectie is tenslotte voldoende).
Echter, als ik dit object nu in de klasse session wil gebruiken gaat het mis. Dit resulteert in de volgende code:
code:
1
Call to a member function RunQuery() on a non-object

Klein schetsje van pagina.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?PHP

include("class_session.php");
include("class_database.php");

$objDatabase = new database();
$objDatabase->Connect();

$objSession = new session();
$objSession->CheckInDB();
?>

Bij de actie CheckInDB(); in het object session connect de klasse session via het object database die aangemaakt is in de pagina ($objDatabase).
Dit is dus niet mogelijk. Is hier een oplossing voor te noemen?
Het is een van de eerste keren dat ik echt met klassess ga werken, ik weet dus niet of dit uberhaubt mogelijk is. Een nieuwe database connectie aanmaken in het object sessie is natuurlijk mogelijk, maar dit lijkt me niet echt efficient?

...


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

(jarig!)
Je kan objecten gewoon aan elkaar doorgeven. :)

PHP:
1
$objSession->CheckInDB($objDatabase->dbLink);

Sundown Circus


  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class session {
      
       private $db;

       public function __construct($db)
       {
              $this->db = $db;

       }

       public function checkInDb()
       {

             //Functies van het db object kan je dan binnen je session klasse als volgt gebruiken.
            $this->db->query();

       }
}

[ Voor 17% gewijzigd door Brakkie op 25-02-2005 11:23 ]

Systeem | Strava


  • IceM
  • Registratie: Juni 2003
  • Laatst online: 07:41
@RedRose
Dan geef ik inderdaad de database link mee.
Echter, dan moet ik binnen de klasse objSession nog steeds gebruik maken van of een nieuw database object of een normale mysql_query() waarbij ik de foutafhandeling voor een 2e keer moet schrijven.

Mijn bedoeling was dus (ik weet niet of dit mogelijk is) om binnen de klasse session gebruik te maken van het object (en dus ook de functies die dit object heeft) database ($objDatabase).

edit:

@Brakkie
ik moet dus het gehele object ($objDatabase) doorgeven aan het object session?

[ Voor 13% gewijzigd door IceM op 25-02-2005 11:25 ]

...


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

(jarig!)
Bovenstaande was een voorbeeld.. Je kan uiteraard ook een compleet object meegeven. :)

Sundown Circus