Jump to content

Archived

This topic is now archived and is closed to further replies.

olegk

Strange problems with PHP4 (OOP)

Recommended Posts

This code prints out "AB", and it should print out "AA". What's wrong with me?

PHP 4.4.2

<?php

class test
{
  var $a="";
  var $b="";
  function testfunc()
  {
      $this->$a="A";
      echo $this->$a;
      $this->$b="B";
      echo $this->$a;
  }
}

$t=new test;
$t->testfunc();

?>

Share this post


Link to post
Share on other sites
[quote]function testfunc()
  {
      $this->$a="A";
      echo $this->$a;
      $this->$b="B";
      [color=red]echo $this->$a;[/color]
  }[/quote]

should the line in red be:

[code]echo $this->$b;[/code]

Share this post


Link to post
Share on other sites
[quote author=sanfly link=topic=106006.msg423695#msg423695 date=1156808950]
...
should the line in red be:
...
[/quote]

No, that's the point. If it were $this->$b, I would expect the code to print "AB", but I print out $this-$a twice, and for some reason the second time it turns into "B"

Share this post


Link to post
Share on other sites
This might be with PHP 5, but I think you need to access your vars with:

[code]      $this->a="A";
      echo $this->a;
      $this->b="B";
      echo $this->a;
[/code]
regards,
...drkstr

Share this post


Link to post
Share on other sites
To access your vars that is in the same class/function you need to use $this->[b]youVarNameHere[/b] just as drkstr pointed out above. This is the same for PHP4 and PHP5.
You do not put the dollar sign after $this-> you just the name of the variable, ie $this->a

Share this post


Link to post
Share on other sites
Is there any reason you didn't take this answer from the other forum you posted this on?

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.