RE: [PHP] Inherited Arrays within objects problem.
| From: | Cynic | Date: | Sat, 23 Dec 2000 13:58:31 +0000 |
| Subject: | RE: [PHP] Inherited Arrays within objects problem. | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-31675@lists.php.net to get a copy of this message | ||
try executing this code:
class one
{
function one(){
$this->myArray = array();
}
function addRow($name,$stuff){
$this->myArray[$name]=$stuff;
}
function removeRow($name){
unset($this->myArray[$name]);
}
}
class two extends one
{
function two(){
$this->one();
}
}
$x = new two() ;
var_dump( $x ) ;
$x->addrow( 'offset' , 'data' );
var_dump( $x ) ;
$x->removerow( 'offset' ) ;
var_dump( $x ) ;
on my computer it produces:
object(two)(1) {
["myArray"]=>
array(0) {
}
}
object(two)(1) {
["myArray"]=>
array(1) {
["offset"]=>
string(4) "data"
}
}
object(two)(1) {
["myArray"]=>
array(0) {
}
}
so, as you can see, it DOES work, at least on my NT5
w/Apache 1.3.15-dev, PHP4.0.4 mod_php
At 14:53 23.12. 2000, Cal Evans wrote the following:
--------------------------------------------------------------
>Sorry, no, the code I provided is an example of what I'm trying to do. I
>didn't actually compile it and now looking at it, yes, it would throw
>errors. It was just meant to illustrate the concept that if I define the
>array in one and instantiate two, I can add but don't seem to be able to
>remove items from the array. I've even tried building a new array and
>overwriting the array. inside the method removeItems, everything seems to
>be fine but once the method ends, the array reverts back to it's original
>contents.
>
>Sorry for the confusion.
>Cal
>
>-----Original Message-----
>From: Cynic [mailto:cynic@mail.cz]
>Sent: Saturday, December 23, 2000 7:50 AM
>To: Cal Evans; php-general@lists.php.net
>Subject: RE: [PHP] Inherited Arrays within objects problem.
>
>
>Say what? It works on you machine? well, then I don't get how
>it could do _anything_. I had to change
>$this->myArray($name)=$stuff; to $this->myArray[$name]=$stuff;
> ^ ^ ^ ^
>to get rid of a parse error. Then I got another one on
>unset($this-myArray($name)); adding the omitted > helped.
> ^^
>Then I got another parse error at unset($this->myArray($name));
> ^ ^
>which is the same problem. Without those three bugs, the code
>worked.
>
>
>
>
>At 14:33 23.12. 2000, Cal Evans wrote the following:
>--------------------------------------------------------------
>>No, the actual code part of a shopping cart I'm building.
>>
>>Cal
>>
>>-----Original Message-----
>>From: Cynic [mailto:cynic@mail.cz]
>>Sent: Friday, December 22, 2000 11:16 PM
>>To: Cal Evans; php-general@lists.php.net
>>Subject: Re: [PHP] Inherited Arrays within objects problem.
>>
>>
>>Ok, I assume that _wasn't_ actual code, was it? It throws up
>>a parse error on myArray($name) and on $this-myArray($name)
>>(of course: should be $this->myArray[$name] ).
>>
>>And, as far as my computer is concerned, this works (of course):
>>
>>class one
>>{
>> function one(){
>> $this->myArray = array();
>> }
>>
>> function addRow($name,$stuff){
>> $this->myArray[$name]=$stuff;
>> }
>>
>> function removeRow($name){
>> unset($this->myArray[$name]);
>> }
>>}
>>
>>class two extends one
>>{
>> function two(){
>> $this->one();
>> }
>>}
>>
>>$x = new two() ;
>>var_dump( $x ) ;
>>$x->addrow( 'offset' , 'data' );
>>var_dump( $x ) ;
>>$x->removerow( 'offset' ) ;
>>var_dump( $x ) ;
>>
>>output is:
>>
>>
>>
>>At 06:03 23.12. 2000, Cal Evans wrote the following:
>>--------------------------------------------------------------
>>>I'm seriously confused.
>>>
>>>I have two classes:
>>>
>>>class one {
>>> function one(){
>>> $this->myArray = array();
>>> }
>>>
>>> function addRow($name,$stuff){
>>> $this->myArray($name)=$stuff;
>>> }
>>>
>>> function removeRow($name){
>>> unset($this-myArray($name));
>>> }
>>>}
>>>
>>>class two extends one{
>>>
>>> function two(){
>>> $this->one();
>>> }
>>>
>>>}
>>>
>>>Now if I instantiate one, I can add and remove rows form the array. If I
>>>instantiate two, I can add rows but never remove them. I've tried
>>>array_splice and unset. within the function two->removeRow() the count
>>drops
>>>by one but once I'm outside of the function, it goes back to the original
>>>size.
>>>
>>>Anyone got ANY idea what I'm doing wrong here?
>>>TIA,
>>>Cal
>>>
>>>*
>>>* Professional Nerd Herder
>>>* http://www.calevans.com
>>>*
>>>
>>>
>>>--
>>>PHP General Mailing List (http://www.php.net/)
>>>To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
>>>For additional commands, e-mail: php-general-help@lists.php.net
>>>To contact the list administrators, e-mail: php-list-admin@lists.php.net
>>------end of quote------
>>
>>
>>
>>____________________________________________________________
>>Cynic:
>>
>>A member of a group of ancient Greek philosophers who taught
>>that virtue constitutes happiness and that self control is
>>the essential part of virtue.
>>
>>cynic@mail.cz
>>
>>
>>
>>
>>--
>>PHP General Mailing List (http://www.php.net/)
>>To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
>>For additional commands, e-mail: php-general-help@lists.php.net
>>To contact the list administrators, e-mail: php-list-admin@lists.php.net
>------end of quote------
>
>
>
>____________________________________________________________
>Cynic:
>
>A member of a group of ancient Greek philosophers who taught
>that virtue constitutes happiness and that self control is
>the essential part of virtue.
>
>cynic@mail.cz
>
>
>
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
>For additional commands, e-mail: php-general-help@lists.php.net
>To contact the list administrators, e-mail: php-list-admin@lists.php.net
------end of quote------
____________________________________________________________
Cynic:
A member of a group of ancient Greek philosophers who taught
that virtue constitutes happiness and that self control is
the essential part of virtue.
cynic@mail.cz