Versio

Non-Object error

Overzicht Reageren

Aron K

Aron K

21/11/2008 15:31:00
Quote Anchor link
Ik heb een class met daarin een array met objecten van een andere class als instance variabele.
Als ik deze array wil foreach-en(for geeft overigens hetzelfde probleem) krijg ik de volgende error:
Quote:
Fatal error: Call to a member function getItem() on a non-object in url on line 27


Weet iemand hoe dit komt, of nog beter; hoe dit op te lossen is?

Bij voorbaat dank.
 
PHP hulp

PHP hulp

25/05/2012 12:16:17
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
--

--

21/11/2008 15:37:00
Quote Anchor link
Heb je misschien een stukje code?
 
Aron K

Aron K

21/11/2008 15:40:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
class Menu{
    private $items;
    
    public function Menu(){
        $this->items = array();
    }

    
    public function addItem($naam,$subitems){
        $parent=&$_SESSION['currentitem'];
        $item = new menuItem($naam,$subitems,$parent);
        array_push($this->items,$subitems);
    }

...................


    public function subItems(){
        for($i=0;$i<count($this->items);$i++){ //mijn regel 27 met de fout
            if($items[$i]->getSubitems()>0){
                return false;
            }
        }

        return true;
    }
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Aron K
 
Arian Stolwijk

Arian Stolwijk

21/11/2008 15:56:00
Quote Anchor link
Blijkbaar doe je iets als

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$var
->getItem();

?>


Maar var is geen object en heeft dus geen method getItem.

controlleer dus of de variabele een object is en het juiste object.
Gebruik daarvoor de operator 'instanceof'.
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
 
Aron K

Aron K

21/11/2008 16:09:00
Quote Anchor link
Dat returnt een false, dus ergens gaat er iets niet bij het vullen van de array.
Er zat een fout in, die zou er uit moeten zijn door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
        array_push($this->items,$subitems);


te verangen door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
        array_push($this->items,$item);


Maar nog steeds gaat het niet goed, kan iemand mij vertellen waar precies?
 
Luuk Schakenraad

Luuk Schakenraad

21/11/2008 17:00:00
Quote Anchor link
Doe eens var_dump($this->items); Kijken of dat iets uit maakt.
 
Aron K

Aron K

21/11/2008 17:03:00
Quote Anchor link
Dan krijg ik:
array(5) { [0]=> object(menuItem)#4 (5) { en dat gaat nog even verder.
Maar als ik controleer of het een instantie is van menuItem dan krijg ik false terug.
 
Luuk Schakenraad

Luuk Schakenraad

21/11/2008 17:19:00
Quote Anchor link
en wat geeft is_object($this->items[0]); terug?
 
Aron K

Aron K

21/11/2008 17:28:00
Quote Anchor link
Dat geeft true terug, en ik heb de fout gevonden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
            if($items[$i]->getSubitems()>0){
                return false;
            }

Moest zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
            if($this->items[$i]->getSubitems()>0){
                return false;
            }


Iig bedankt allemaal, ik kan weer verder.
Gewijzigd op 01/01/1970 01:00:00 door Aron K
 
Luuk Schakenraad

Luuk Schakenraad

21/11/2008 17:30:00
Quote Anchor link
Ik ben ook pas een maandje of twee bezig met classes, dat wil ik ook nog wel eens vergeten :P
 
Aron K

Aron K

21/11/2008 17:31:00
Quote Anchor link
Ik programmeer bijna dagelijks met classes, alleen dan in Java, daarmee hoeft dat allemaal niet.
Vandaar dat ik het ook steeds weer vergeet.
PHP moet nog een hoop vorderen op het gebied van OOP.
 



Overzicht Reageren