[php] variable problem *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kmf
  • Registratie: November 2000
  • Niet online
Ik heb de afgelopen week minder dan 4 uur per nacht geslapen, dus kan ik niet echt logisch meer nadenken. Dus vergeef me voor deze n00b-probleem...

iets waar ik nu niet uit kom.

Ik heb hier de volgende structuur.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
new klasse;
class klasse
   {
      function switcher
          {
              $text= new array (bla=>'bla');
              switch ($http_get_vars['act']
               {
                        case 'dit':
                                $this>do_dit();
                               break;
               }
          }

           function do_dit()
            {
                   echo $text['bla'];
             }
   }



nou komt er bij do_dit() niks uit.
Hoe kan ik ervoor zorgen dat $text bij do_dit wel bestaat?

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 14:21

Cyphax

Moderator LNX
$text definieren als variabele in de class zelf, of 'm doorgeven aan de functie do_dit()? :)

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • kmf
  • Registratie: November 2000
  • Niet online
Cyphax schreef op woensdag 17 november 2004 @ 00:16:
$text definieren als variabele in de class zelf, of 'm doorgeven aan de functie do_dit()? :)
zal zoiets lukken?

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
new klasse;
class klasse
   { 
      $this->define_var();
      function switcher()
          {
              switch ($http_get_vars['act'])
               {
                        case 'dit':
                                $this>do_dit();
                               break;
               }
          }

           function do_dit()
            {
                   echo $text['bla'];
             }

          function define_var()
            {
                 $text= new array ('bla'=>'bla');
            }

   }


Ik heb $text als voorbeeld genomen, maar eigenlijk zijn het een hoop variabelen die gedefinieerd moeten worden.

(drink nog een bak koffie)

[ Voor 10% gewijzigd door kmf op 17-11-2004 00:31 ]

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Regel 4: Dit moet in de constructor komen geloof ik (function klasse() )
Regel 5: Moeten hier geen haakjes achter?
Regel 7: Haakje vergeten?
Regel 10: $this->do_dit() (- vergeten?)
Regel 22: bla=>'bla', moet dit niet 'bla'=>'bla' zijn?

EDIT:
En even var $text ergens in de class zetten, zie PHP docs over classes:
http://www.php.net/manual/en/language.oop.php

[ Voor 29% gewijzigd door ixi op 17-11-2004 00:28 ]


Acties:
  • 0 Henk 'm!

  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 24-06 09:47

4VAlien

Intarweb!

misschien handing om alle warnings te enablen als je toch brak wilt proggen :P ( error_reporting = E_ALL )

Acties:
  • 0 Henk 'm!

  • kmf
  • Registratie: November 2000
  • Niet online
ixi schreef op woensdag 17 november 2004 @ 00:26:
Regel 4: Dit moet in de constructor komen geloof ik (function klasse() )
Regel 5: Moeten hier geen haakjes achter?
Regel 7: Haakje vergeten?
Regel 10: $this->do_dit() (- vergeten?)
Regel 22: bla=>'bla', moet dit niet 'bla'=>'bla' zijn?
Ik heb dit even simpele versie ingetikt, het is niet de code die ik echt heb, dus syntaxfouten kan voorkomen. Het gaat immers om het idee, niet dat er voor mij gedebugged wordt.

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Dan kan je je probleem verhelpen door ergens in de class

var $text;

te zetten zoals Cyphax al aangaf. M'n punt van constructor blijft staat; je kan geen functie (define_var();) aanroepen in de 'body' van je class.

Acties:
  • 0 Henk 'm!

Verwijderd

No offense, maar ik zou effe gaan slapen en daarna de PHP manual betreft OOP programmeren eens doornemen als ik jou was. ;)

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 14:21

Cyphax

Moderator LNX
Je kunt een paar manieren verzinnen maar een constructor is altijd wel mooi als je bij het aanmaken van de klasse ook variabelen wilt zetten. Je hebt zelf $text gedefinieerd in de klasse, dus daar hoef je geen constructor voor te maken in dit geval. Als jouw echte code toch anders is moet je even beoordelen voor jezelf of je een constructor nodig gaat hebben.

Dit kan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class klasse
{
  var $text = array ("bla"=>"bla");

  function switcher()
  {
    switch ($http_get_vars['act'])
    {
      case 'dit': $this>do_dit();
                  break;
    }
  }

  function do_dit()
  {
    echo $text['bla'];
  }
}


En dit ook als je liever die variabele niet maakt in je klasse (dit is wat mooier als je $text alleen gebruikt voor functie do_dit()):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class klasse
{
  function switcher()
  {
    $text = array ("bla"=>"bla");

    switch ($http_get_vars['act'])
    {
      case 'dit': $this>do_dit($text);
                  break;
    }
  }

  function do_dit($text)
  {
    echo $text['bla'];
  }
}
Verwijderd schreef op woensdag 17 november 2004 @ 01:06:
No offense, maar ik zou effe gaan slapen en daarna de PHP manual betreft OOP programmeren eens doornemen als ik jou was. ;)
Dat is ook een goed idee als je er niet uitkomt door pure brakheid. :)

[ Voor 38% gewijzigd door Cyphax op 17-11-2004 01:16 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • kmf
  • Registratie: November 2000
  • Niet online
ik heb het na een 3e kop koffie maar opgelost door de vars als global te definieren.

Niet echt netjes, maar als het maar werkt morgen.

Nu pitten. :Z

morgen of later als ik minder brak ben probeer ik die tips eens uit :)

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

PHP-manual:

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
<?php
class Cart {
   /* None of these will work in PHP 4. */
   var $todays_date = date("Y-m-d");
   var $name = $firstname;
   var $owner = 'Fred ' . 'Jones';
   /* Arrays containing constant values will, though. */
   var $items = array("VCR", "TV");
}

/* This is how it should be done. */
class Cart {
   var $todays_date;
   var $name;
   var $owner;
   var $items = array("VCR", "TV");

   function Cart() {
       $this->todays_date = date("Y-m-d");
       $this->name = $GLOBALS['firstname'];
       /* etc. . . */
   }
}
?> 


Een variabele binnen een klasse kan je dus toegankelijk maken door het $this keyword. Allemaal even 3 bakken koffie drinken dus.. :P

Sundown Circus

Pagina: 1