Fatal error: Call to a member function getName() on a non-object

I tell you something chaps this is killin me!

Fatal error: Call to a member function getName() on a non-object! I have posted this problem a few times but it keeps coming back to haunt me and I am losing faith in storing objects in sessions altogether!

Some of my classes have an update method that updates a Page, a Product, an Image etc via a HTML front end. Now the Product class' update function works perfectly well, however the Page and Link class both give the Fatal Error. Each class uses the same process so it's baffling, plus all of the functions work perfectly on my local machine it's just my web server that is giving me grief!

This is the update function of the Page class:

class Page{
...

         function updatePage($_POST, $uri){
      $userId=$_SESSION['user']->getUserId();
      
      $_SESSION['page'] = unserialize($_SESSION['page']);
      $pageName=$_SESSION['page']->getName();
      $windowTitle=$_SESSION['page']->getWindowTitle();
      $HTML=$_SESSION['page']->getContent();
      serialize($_SESSION['page']);

                ***update code****
...

and the product class, which works uses the same process:

class Product{
...
         function updateProduct($_POST, $uri){


      $_SESSION['product']=unserialize($_SESSION['product']);
      $description = $_SESSION['product']->getDescription();
      $shortDescription = $_SESSION['product']->getShortDescription();
      $productName = $_SESSION['product']->getName();
      $price = $_SESSION['product']->getPrice();
      $images=$_SESSION['product']->getImageNamesArray();
      $productInCats=$_SESSION['product']->getProdInCategoryAsArray();
      $_SESSION['product']=serialize($_SESSION['product']);

               ***update code****
...

now I know the object is there because doing a var_dump($_SESSION) shows me the page object and its associated attributes. I am on PHP5 and I know register_globals is switched on with my host.I have taken the advice to include an autoload function as well to try and combat the problem but it still remains!

Please restore my faith in PHP SESSION Objects.

If i have not made myself clear please feel free to ask me to post more code or more info.

Thanks a million!!

jonlondon12Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

RoonaanCommented:
Hi,

Have you made sure that your class {} code is executed before you run session_start().

When you have session_start() before your class{} definition, php will convert the objects to anonymous classes with no methods and only attributes.

-r-
jonlondon12Author Commented:
Hey Roonaan,

Yes my class code is executed before I run session_start, however I believe that my host has auto_session_start switched on so this may get called first. How can I get around this?

Cheers
RoonaanCommented:
Ask your host to turn that off. Personally I don't see another way.
It might be that you can use .htaccess file to do this, but this is not always allowed.

-r-

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jonlondon12Author Commented:
yeahmy host runs PHP as a cgi module which I believe stops .htaccess from functioning correctly.

I think I may need to switch hosts as they do not seem very quick to reply to my queries.

Thanks for your help
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.