"I probably should've used the term "static" from the beginning." <- maybe
The mistake is mine not yours. I know about the :: operator I use it all the time (but within classes parent::function() etc) - but I never realised until now that PHP will let you use any class before instantiation (and nearly all my PHP work uses classes). I have never even attempted to try it because in all other languages I know trying to use an ordinary class before instantiation will just result in a null pointer error or the equivalent of one. PHP OOP is different I know, one big example is that there is no provision for data encapsulation - one of the main objectives of OOP, neither can you differentiate between types of classes/methods (which is probably what is causing the confusion). Now it seems it is even more different than I thought. All I can say is mmhh....... Debbie ----- Original Message ----- From: "Nick Eby" <[EMAIL PROTECTED]> To: "Debbie Dyer" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Wednesday, October 02, 2002 7:53 PM Subject: Re: [PHP] Inheritance and a class function: on what class was it called? > when you call a function with ->, you must call it on an object ($c->foo(), > for example). the function is termed an "object function" when used that > way. php has an operator :: that enables that same function to be called > without a specific object; in this case, I'm referring to it as a "class" > function. another term for this is usually "static" function. any function > of a class can be called in both ways. the only catch is that, when called > as a class function, the function can't in turn call any functions on $this > or a fatal error will result. > > sorry this is so confusing, I probably should've used the term "static" from > the beginning. > > /nick > > ----- Original Message ----- > From: "Debbie Dyer" <[EMAIL PROTECTED]> > To: "Nick Eby" <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Wednesday, October 02, 2002 11:33 AM > Subject: Re: [PHP] Inheritance and a class function: on what class was it > called? > > > > I dont understand what you are saying then or what you are trying to do. > > > > How can you call C::foo() outside of a class? You access class functions > > externally with -> > > > > Debbie > > > > ----- Original Message ----- > > From: "Nick Eby" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Wednesday, October 02, 2002 7:24 PM > > Subject: Re: [PHP] Inheritance and a class function: on what class was it > > called? > > > > > > > not quite... the case I'm interested in is this, given your example: > > > > > > print C::foo(); > > > > > > which would print nothing, unfortunately, since when the function is > > called > > > using the :: operator there is no $this variable. basically what I'm > > > looking for is a replacement for get_class($this) when the function is > > > called using :: > > > > > > thanks > > > > > > /nick > > > > > > "Debbie Dyer" <[EMAIL PROTECTED]> wrote in message > > > 054c01c26a3f$34f6d230$de093c3e@homepc">news:054c01c26a3f$34f6d230$de093c3e@homepc... > > > > I think I know what you mean. You could get it to return the name of > the > > > > class. > > > > > > > > eg. > > > > > > > > class A { > > > > function foo () { > > > > return get_class($this); > > > > } > > > > } > > > > class B extends A { > > > > } > > > > class C extends A { > > > > } > > > > > > > > $a = new A(); > > > > $b = new B(); > > > > $c = new C(); > > > > print $a->foo(); > > > > print $b->foo(); > > > > print $c->foo(); > > > > > > > > Is this what you mean? > > > > > > > > Debbie > > > > > > > > ----- Original Message ----- > > > > From: "Nick Eby" <[EMAIL PROTECTED]> > > > > To: <[EMAIL PROTECTED]> > > > > Sent: Wednesday, October 02, 2002 6:29 PM > > > > Subject: [PHP] Inheritance and a class function: on what class was it > > > > called? > > > > > > > > > > > > > Assume you've got some class that has one or more classes inherited > > from > > > > it. > > > > > The parent class has a function that is normally called using the :: > > > > > operator (a class function). Assume also that the class function is > > > never > > > > > called from an object function. Is it possible to find if the class > > > > > function was called on the parent class, or on the child class? > > > > > > > > > > example: > > > > > Class A has a function foo(), callable by A::foo(). Class B extends > A. > > > If > > > > > outside code makes the call B::foo(), can you tell from within foo() > > > that > > > > > the function was called on B and not A? > > > > > > > > > > I think this is impossible but I want to confirm that suspicion. > It's > > > > > important that the call B::foo() isn't made from inside any object > > > > function, > > > > > so that there's no context for the $this variable; the get_class() > > > > function > > > > > isn't applicable. > > > > > > > > > > > > > > > > > > > > -- > > > > > PHP General Mailing List (http://www.php.net/) > > > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > PHP General Mailing List (http://www.php.net/) > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php