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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: ojapp at skip-consulting dot de
New email:
PHP Version: OS:

 

 [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

Pull Requests

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: Tue Oct 22 17:01:41 2024 UTC