ID: 37723 Updated by: [EMAIL PROTECTED] Reported By: matt at c dot anvas dot es -Status: Open +Status: Bogus Bug Type: Class/Object related Operating System: Any PHP Version: 5.1.4 New Comment:
>hey, this is a bug, because the child class should >inheret its parents innards' That's EXACTLY what it does and I personally consider this expected. The child inherits parents context, what's wrong here? But we're working on late static binding, which would change this behaviour to the expected one, that's why there is no sense in keeping this report open. Thank you. Previous Comments: ------------------------------------------------------------------------ [2006-06-07 21:02:04] matt at c dot anvas dot es I did search, and I see something beyond 'late static binding' here. The child class (or the parser) is leaving its context in search of the method to inheret, but it doesn't bring it into its context. In fact, it takes the user into the parent's context. It changes its context. This goes beyond simply saying that you're trying to figure out how to do 'late static binding', and more into the realm of 'hey, this is a bug, because the child class should inheret its parents innards, and _stay within its context_.' Am I mistaken in this thought? Is is perfectly OK and not a bug that the context itself is changed? I submitted this bug because I don't think the previous bug submissions adequately described the issue at hand. Please read the description. M.T. ------------------------------------------------------------------------ [2006-06-07 08:05:47] [EMAIL PROTECTED] Try to search bug DB before reporting new issues. See bug #37654 and bug #37684. ------------------------------------------------------------------------ [2006-06-07 08:04:39] matt at c dot anvas dot es (Fixed name) ------------------------------------------------------------------------ [2006-06-07 07:34:51] matt at c dot anvas dot es Description: ------------ Though I've verified that others have noted the same problem with code similar to mine, I noticed what appeared to be a greater problem than at first realized. In the code below, a call to get_class() from a static method inhereted from the parent class actually shows no evidence of inheretence. One look at the stacktrace and you'll not even see one mention of the child class. Late static binding may fix this, as I'm not precisely sure what that does and what the exact problem is, but the way I see it, the child class is not inhereting everything from its parent but has, instead, thrown the call to its parent, thereby changing its context. Again, consider the code: my context is that I'm talking with a child object, whose parent has a static method that gets its name. Unfortunately, when asking the child its name, the parent's name is instead given. If indeed the child has inhereted its parents properties and methods, then this is a bug whereby it changes the context outside of itself. Compare this to human inheretence and the children inheret all of the properties from their parents (though a bit organically with crossing over and the like). But still, it contains those things and does not go to the parent every time a property or an action needs to be consulted or acted. Again, a look at the backtrace reveals that it totally skips the child class, as if it doesn't even exist. Reproduce code: --------------- class Parent { public static function name() { // debug_print_backtrace(); // observe this return get_class(); } } class Child extends Parent {} print Child::name(); Expected result: ---------------- Child Actual result: -------------- Parent ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=37723&edit=1