One thing you should know is that PHP OO model isn't as extensive as some other languages. However, the question of how extensive it needs to be is of debate considering the vast majority of it's use is centered around web developement.
For more information though, I would suggest you check out this link.
http://www.php.net/manual/language.oop.php
Now for some less than reliable ranting.
The other thing that confuses me is that there are constructors but no disctructors. There is a new without a delete. How do you free the memory of an instance when it is no longer needed?
That's handled by the PHP scripting engine. And when you get right down to it, how long do you expect this stuff to be around in a web environment? Now if you are programming something other than a web page/script or bash script, and it actually runs for some time, much like a PHP-GTK app or the load balancer I did, then this warrants some consideration. But even still, in a dynamically typed language, what's wrong with just doing...
... if you want to be sure it's not hanging around getting in the way?
Memory management isn't something that isn't normally thought about in PHP.
If I create a base class pet and have class dog and class cat that inheriate pet, can I define an array of pointers to pet and assign dog to petarray[0] and cat to petarray[1] and then be able to call petarray[0] to get the features of dog and call petarray[1] to get the features of cat?
I don't see why you can't do this. However, it's a matter of knowing what PHP provides then either coding within it's documented (and community accepted) boundaries, or bastardizing what's there to reach your objective.
For instance, pointers don't really exist in PHP, nor do things like structures. However, I use structures and pointers in my programming by taking liberties with what PHP does provide. I can create a class without methods and then create functions that act upon the elements of those method-less classes. Alas, structures.
In short, you can do whatever you need in PHP, but you can't allways expect to do it the same way you did it elsewhere.
Also, being a dynamically typed language, the lack of type declaration and memory management may seem a little strange, or even crazy.
Cheers,
BDKR