[PHP] object zichzelf in session laten zetten??

Pagina: 1
Acties:

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
ik wil graag een class instantieeren en dan meteen zichzelf meegeven zodattie zichzelf via de constructor in sessie zet.

dit lukt mij echter niet.

class.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class value_class{

    var $pizza="lekker";

    function value_class($c_){

        global $d;
        session_register("d");

        $d=$c_;

    }

    function get_pizza()
    {
        return $this->pizza;
    }
    function set_pizza($in_)
    {
        $this->pizza = $in_;
    }

}

index.php:
code:
1
2
3
4
require("class.php");
session_start();

$a = new value_class($a);

kan dit uberhaubt?

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Wat jij doet kan volgens mij niet.
code:
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
class value_class{
  var $pizza="lekker";

  function value_class(){
    // iets?
  }

  function register(){
    global $d;
    session_register("d");
    $d=$this;
  }

  function get_pizza(){
    return $this->pizza;
  }

  function set_pizza($in_){
    $this->pizza = $in_;
  }
}

require("class.php");
session_start();
$a = new value_class();
$a->register();

Skill is when luck becomes a habit.


  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
Op dinsdag 15 januari 2002 15:19 schreef _eek_ het volgende:
Wat jij doet kan volgens mij niet.
ja maar... ja maar..
ik wil het zo graag wel zeker weten ;)

kan iemand dit met zekerheid zeggen?

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op dinsdag 15 januari 2002 15:31 schreef GiLuX het volgende:

[..]

ja maar... ja maar..
ik wil het zo graag wel zeker weten ;)

kan iemand dit met zekerheid zeggen?
lees de manual, check __sleep en __wakeup, en serialize/unserialize.

Klaar voor een nieuwe uitdaging.


  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
Op dinsdag 15 januari 2002 15:32 schreef chem het volgende:

[..]

lees de manual, check __sleep en __wakeup, en serialize/unserialize.
ah, de manual,
die kan ik bijna dromen,
well, almost.

anyway,
ik zie niet in wat sleep en wakeup er mee te maken zouden kunnen hebben.

wat betreft serializing,
dat is ook niet echt van toepassing omdat dat met sessies automatisch gebeurd.
enige vereiste is dat de class file altijd beschikbaar is, omdat php tijdens het serializen alleen de classnaam en interne vars wegschrijft en bij het un-serializen aan de hand van die class naam weer het orginele object creeert.

hoe dan ook,
ik zie nog steeds niet in wat dat het wel/niet zou beletten om te doen wat ik wil.

please explain

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 15 januari 2002 14:37 schreef GiLuX het volgende:
PHP:
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
<?
class value_class{

    var $pizza="lekker";

    function value_class($c_){

        global $d;
        session_register("d");

        $d=$c_;

    }

    function get_pizza()
    {
        return $this->pizza;
    }
    function set_pizza($in_)
    {
        $this->pizza = $in_;
    }

}
?>

index.php:
code:
1
2
3
4
require("class.php");
session_start();

$a = new value_class($a);

kan dit uberhaubt?
Zoals je het nu doet is het niet mogelijk en wel hierom :
de variabele $a is leeg(Null) wanneer je hem meestuurd in new value_class($a) en aan gezien dit ding by value wordt doorgegeven wanneer het een functie ingaat. Gaat dit niet lukken want de $a in de functie blijft leeg(null)

Wat je kunt proberen is om in de constructor te zetten :

session_register('mijnKlasse');
$mijnKlasse = $this;

Maar of dit werkt weet ik niet.

Je kunt de variabele wel by reference doorgeven dan moet je voor de variabele volgens mij een & zetten

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
Op dinsdag 15 januari 2002 16:16 schreef vgouw het volgende:

.....
ok, tnx,
zal het proberen,

ik had het ook al by reference geprobeerd maar dat leverde ook nix op:
$a = new value_class(&$a);

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Dit getuigt van alles-behalve een net OO-design...

Wat nou als ik een 2e instantie van de class value-class maak, die toevallig niet "$d" heet, maar wel een andere variabele die $d heet waar iets geheel anders in staat?

Ik zou uberhaupt het e.e.a. aan dit idee sleutelen...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
Op dinsdag 15 januari 2002 17:19 schreef drm het volgende:
Dit getuigt van alles-behalve een net OO-design...

Wat nou als ik een 2e instantie van de class value-class maak, die toevallig niet "$d" heet, maar wel een andere variabele die $d heet waar iets geheel anders in staat?

Ik zou uberhaupt het e.e.a. aan dit idee sleutelen...
:)
de kans is erg klein, $d was maar om een simpel voorbeeld te geven.

ik was benieuwd of het kon,
het kan idd veel beter/netter.

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op dinsdag 15 januari 2002 16:05 schreef GiLuX het volgende:

[..]

ah, de manual,
die kan ik bijna dromen,
well, almost.

anyway,
ik zie niet in wat sleep en wakeup er mee te maken zouden kunnen hebben.

wat betreft serializing,
dat is ook niet echt van toepassing omdat dat met sessies automatisch gebeurd.
enige vereiste is dat de class file altijd beschikbaar is, omdat php tijdens het serializen alleen de classnaam en interne vars wegschrijft en bij het un-serializen aan de hand van die class naam weer het orginele object creeert.

hoe dan ook,
ik zie nog steeds niet in wat dat het wel/niet zou beletten om te doen wat ik wil.

please explain
voor diegene die de page niet kunnen vinden:
http://www.php.net/manual/en/language.oop.magic-functions.php
If you are using sessions and use session_register() to register objects, these objects are serialized automatically at the end of each PHP page, and are unserialized automatically on each of the following pages. This basically means that these objects can show up on any of your pages once they become part of your session.
van http://www.php.net/manual/en/language.oop.serialization.php

en dan heb je idd gelijk :)

maar die __sleep en __wakeup kan je dan nog wel steeds gebruiken :)

Klaar voor een nieuwe uitdaging.

Pagina: 1