Solved

PHP Notice - What exactly does it mean?

Posted on 2011-02-22
4
520 Views
Last Modified: 2012-05-11
If you get the error "Notice: Trying to get property of non-object" What exactly does that mean?

$html .= '<ul class="' . $options->rootClassName . '">';

Open in new window


This is the code thats causing it. I know its not enough information to tell me whats doing it. But I was hoping someone could at least tell me what it means.
0
Comment
Question by:sparingatom
  • 2
4 Comments
 
LVL 17

Expert Comment

by:Dushan De Silva
ID: 34956915
This mean on above lines you may already declared and assigns values to $options object. But you are trying to access rootClassName of that object. which is not available. You may try
$this->_class->rootEntityName
$this->_class->name
http://css.dzone.com/books/practical-php-patterns/practical-php-patterns?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+zones/php+%28PHP+Zone%29
0
 
LVL 17

Expert Comment

by:Dushan De Silva
ID: 34956923
or the $options is not an Object as you manipulated on above lines.
0
 
LVL 27

Accepted Solution

by:
Lukasz Chmielewski earned 500 total points
ID: 34958494
Just an addition. There is a class of some kind which name is - let's say Options, and has a variable rootClassName
class Options{
var $rootClassName;
...
}

Open in new window

and you are trying to access the variable without creating an object of this class
this causes the error
$html .= '<ul class="' . $options->rootClassName . '">';

Open in new window

this should not
$options = new Options();
// declare the value of the rootClassName (if there is none)
$html .= '<ul class="' . $options->rootClassName . '">';

Open in new window


Hope I'm clear.
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 34960137
Start your reading here:
http://us2.php.net/manual/en/language.oop5.php

The code snippet contains an example that will cause the error.  Please see line 40.  You can test this on my web site here:
http://www.laprbass.com/RAY_object_iterator.php
<?php // RAY_object_iterator.php
error_reporting(E_ALL);
echo "<pre>" . PHP_EOL; // MAKE IT EASY TO READ THE OUTPUT

// DEFINE A CLASS OF TEST DATA
class Thing
{
    // DEFINE SOME PROPERTIES
	public $p1, $p2, $p3;

	// DEFINE A CONSTRUCTOR TO SET THE VALUES OF THE PROPERTIES
	public function __construct()
	{
	    $this->p1 = 'One';
		$this->p2 = 'Two';
		$this->p3 = 'Three';
	}
}

// INSTANTIATE THE OBJECT
$x = new Thing;

// SHOW THE CONTENTS OF THE OBJECT
var_dump($x);

// ITERATE OVER THE OBJECT
foreach ($x as $property => $value)
{
    echo PHP_EOL . "$property CONTAINS $value";
}

// IS THIS REALLY AN OBJECT?
if (is_object($x)) echo PHP_EOL . "X IS AN OBJECT";

// CREATE A NON-OBJECT
$y = array();
if (is_array($y)) echo PHP_EOL . "Y IS AN ARRAY";

// TRY TO ACCESS A PROPERTY OF A NON-OBJECT
echo PHP_EOL . $y->prop;

Open in new window

0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question