Nieuw lid |
|
In een applicatie heb ik 4 classes:
- Registry
- Db
- User
- Form
Er zijn 2 belangrijke criteria:
- Het Form moet (bepaalde) class vars in User kunnen veranderen.
- De User moet ik in alle scripts kunnen aanroepen, compleet met de gewijzigde variabelen intact, zoals deze in Form zijn aangebracht, zodat ik daaruit data kan lezen.
In Registry berg ik Db en User op als singleton (ook nog maar net geleerd ).
De class Form wordt bij elk form aangeroepen met new Form.
Zowel class User als class Form kunnen Db aanroepen in een class var en in Form zit een class var, die het User-object bevat.
Nu het vreemde.
Ik laat de gebruiker inloggen en redirect hem na succes.
Alleen: als ik dan een instantie van User uit Registry haal, dan zijn alle variabelen van User pleite.
Hier een versimpelde versie (die dus ook niet werkt).
Waar kijk ik nou overheen?
Bedankt alvast voor de hulp.
Roland
Registry:
http://www.plaatscode.be/5642/
Form:
<?php
class Form {
var $user;
function Form() {}
public function test() {
$this->user->id = 6; // voor de test
$this->user->loginSuccess();
}
} // end class
?>
<?php class Form { var $user; function Form() {} public function test() { $this->user->id = 6; // voor de test $this->user->loginSuccess(); } } // end class ?>
User:
<?php
class User {
var $id;
var $loggedIn;
function User() {}
function loginSuccess() {
$this->loggedIn = true;
}
} // end class
?>
<?php class User { var $id; var $loggedIn; function User() {} function loginSuccess() { $this->loggedIn = true; } } // end class ?>
Login:
<?php
session_start();
ob_start();
include_once 'inc.class.registry.php';
include_once 'inc.class.form.php';
echo '<html><head><title>login</title></head><body>';
$oUser = &getUser();
$oForm = new Form;
$oForm->user = $oUser;
$oForm->test();
header('location: doeiets.php');
echo '</body></html>'; // komen we nooit
?>
<?php include_once 'inc.class.registry.php'; include_once 'inc.class.form.php'; echo '<html><head><title>login</title></head><body>'; $oUser = &getUser(); $oForm = new Form; $oForm->user = $oUser; $oForm->test(); header('location: doeiets.php'); echo '</body></html>'; // komen we nooit ?>
doeIets:
- Is oUser een object? => JA
- Heeft $oUser een id? =>NEE
- Is $oUser ingelogd? => NEE
<?php
session_start();
ob_start();
include_once 'inc.class.registry.php';
echo '<html><head><title>doeiets</title></head><body>';
$oUser = &getUser();
echo 'DOEIETS.PHP<br />';
echo '===========<br />';
echo 'Is $oUser een object? ' . (is_object($oUser) ? 'JA' : 'NEE') . '<br />';
echo 'Heeft $oUser een id? ' . ($oUser->id ? 'JA' : 'NEE') . '<br />';
echo 'Is $oUser ingelogd? ' . ($oUser->loggedIn ? 'JA' : 'NEE') . '<br />';
echo '</body></html>';
?>
<?php include_once 'inc.class.registry.php'; echo '<html><head><title>doeiets</title></head><body>'; $oUser = &getUser(); echo 'DOEIETS.PHP<br />'; echo '===========<br />'; echo 'Is $oUser een object? ' . (is_object($oUser) ? 'JA' : 'NEE') . '<br />'; echo 'Heeft $oUser een id? ' . ($oUser->id ? 'JA' : 'NEE') . '<br />'; echo 'Is $oUser ingelogd? ' . ($oUser->loggedIn ? 'JA' : 'NEE') . '<br />'; ?>
|