Jump to content
Larry Ullman's Book Forums

Recommended Posts

I made a class and used self:: in the constructor so it calls all methods directly.

The problem is that when I tried the example in the book with pets it works perfect,

but while doing something nearly the same, just with a computer class, it doesn't work right.

I tried to override a method in a child class and it simply won't override it.

I used static:: and it works perfect. I read the documentation on php.net but I don't seem to get

the 'why' question. Why does it happen that self:: doesn't work, static:: works in this case?

Why do I have to use late static binding?

Link to comment
Share on other sites

The calling class would be the class used to call the method from. Inside class Dog, self::prop; would equal Dog::prop etc.

 

It's really hard to understand what you doing here without seeing your code, but my feeling is that your code shouldn't really be static. Static methods doesn't really allow for inheritance. The accepted answer in this Stack Overflow gives you some context:

 

http://stackoverflow.com/questions/532754/inheritance-of-static-members-in-php

Link to comment
Share on other sites

  • 2 weeks later...
 Share

×
×
  • Create New...