[PHP] Var binnen een class werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 11:53

Ethnocentrix

Rijkserkend prutser

Topicstarter
Ik zit nu al een tijdje moet het volgende probleem:

In de code hieronder maar ik de var $buffer aan. In die var wordt de tekst "test!" gezet. Als ik die var vervolgens in de functie showDebugWindow uit wil lezen, lijkt het alsof de var helemaal niet bestaat.

De code van de class:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class Debug
{
    var $buffer = "test!";

    function Debug()
    {
        $this->buffer = "w00t";
    }

    function showDebugWindow()
    {
        echo "<div id=\"debug\">";
        echo "<b>test?</b>";
        echo $this->buffer;
        echo "</div>";
    }
}
?>

In princiepe zou in die <div> test?w00t moeten komen te staan. het probleem is nu dat er alleen test? komt te staan.

Weet iemand hoe dit komt?

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Dit werkt prima bij mij hoor.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Debug
{
    var $buffer = "test!";

    function Debug()
    {
        $this->buffer = "w00t";
    }

    function showDebugWindow()
    {
        echo "<div id=\"debug\">";
        echo "<b>test?</b>";
        echo $this->buffer;
        echo "</div>";
    }
}


$test = new Debug();
$test->showDebugWindow();

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
gebruik je toevallig PHP5? daar moet je tegenwoordig de constructor __construct noemen
http://nl3.php.net/manual/en/language.oop5.decon.php

:edit
oh, da's waar ook. hij zou gewoon backwards compatible moeten zijn (zelf nog niet met php5 kunnen klooien :().
eh, zet je error_reporting eens op E_ALL en zet bijvoorbeeld een echo statement in je constructor om te kijken of ie wel wordt uitgevoerd (en echo vervolgens op het end ook $this->buffer)

[ Voor 54% gewijzigd door marty op 12-03-2005 08:53 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Het is waarschijnlijk niet de oplossing maar var $buffer = "test!"; gaat waarschijnlijk niet werken in php4.
Zie http://nl2.php.net/manual/nl/language.oop.php(derde voorbeeld code)

Verder kan ik niet zien hoe je de classe instantieert, en de functie aanroept. Misschien zit daar wel een fout in. Dus het lijkt me handig als je dat er even bijzet.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Verwijderd schreef op zaterdag 12 maart 2005 @ 09:49:
Het is waarschijnlijk niet de oplossing maar var $buffer = "test!"; gaat waarschijnlijk niet werken in php4.
Zie http://nl2.php.net/manual/nl/language.oop.php(derde voorbeeld code)
Dat gaat wel werken. De voorbeeld geeft aan dat je variabelen niet dynamisch mag initialiseren, door bijvoorbeeld het gebruik van een functie, een globale variabel of de uitkomst na een actie met een operator. Een constante waarde mag gewoon.

Verder vermoed ik dan de TS iets als dit doet:
PHP:
1
Debug::showDebugWindow();

Dan heeft $this->buffer geen waarde omdat er geen instance is om de waarde vandaan te plukken. $this refereert namelijk nergens naar in dit geval.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022

tombo_inc

uhuh

idd,
als je je object niet instantieerd dan moet je 'self' gebruiken. verder moet je op verschillende plaatsen eens kijken wat er geechoot word en je moet controleren of de functies allemaal goed aangeroepen worden. (btw bij php5 mag geen 'var' meer worden gebruikt)

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Tombo_inc schreef op zaterdag 12 maart 2005 @ 10:55:
(btw bij php5 mag geen 'var' meer worden gebruikt)
Dat mag wel i.v.m. backwards compatibility.

Noushka's Magnificent Dream | Unity

Pagina: 1