php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #2971 Misbehaved instance variables in classes
Submitted: 1999-12-13 18:57 UTC Modified: 2002-10-01 10:32 UTC
From: ojapp at skip-consulting dot de Assigned:
Status: Not a bug Package: Other
PHP Version: 3.0.11 OS: Linux Suse 6.2
Private report: No CVE-ID: None
 [1999-12-13 18:57 UTC] ojapp at skip-consulting dot de
Hi, I got a little problem with the following script.
The member vars are not set properly.

<?php

class Option
{
	function Option()
	{
		return $this;
	}
}

class Select
{
	var $options;
	var $optionCount=0;

	function Select()
	{
		return $this;
	}
	
	function addOption()
	{
		$this->options[$this->optionCount++] = new Option();
		echo 'select.addOption() called... optionCount ='.$this->optionCount.'<br>';
	}

 	function create()
	{
		echo 'select.create() called... optionCount ='.$this->optionCount.'<br>';
	}	
}

class Dialog
{
	var $sel;
	
	function Dialog()
	{
		return $this;
	}
	
	function addSelect()
	{
		$this->sel = new Select();		
		return $this->sel;
	}
	
	function create()
	{
		$this->sel->create();
	}
}

$d = new Dialog();
$a = $d->addSelect();
$a->addOption();
$a->addOption();
$d->create();

?>

this script puts out

select.addOption() called... optionCount =1
select.addOption() called... optionCount =2
select.create() called... optionCount =0

but it should put out

select.addOption() called... optionCount =1
select.addOption() called... optionCount =2
select.create() called... optionCount =2

The member var optionCount is'nt set well.

Regards 
Olaf Japp

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-10-01 10:32 UTC] hholzgra@php.net
In PHP 3 and 4 Objects are copied on assignment
by default. In PHP 3 there is no easy way to get
around this, in PHP 4 it is possible to return
references from functions and methods.
The situation will improve greatly in the upcoming
PHP 5 with Zend Engine 2
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Jul 21 07:01:28 2024 UTC