Re: undocumented OOP feature/bug?
| From: | Jurre Thiel | Date: | Sun, 05 Jan 2003 13:04:07 +0000 |
| Subject: | Re: undocumented OOP feature/bug? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-130313@lists.php.net to get a copy of this message | ||
You could check if a variable in $this exists:
class A
{
var $bla;
function Go()
{
switch(isset($this->bla))
{
case true: echo 'Called Dynamicaly<br />'; break;
case true: echo 'Called Statically<br />'; break;
}
}
}
Or, if that doesn't work, you could do this:
class A
{
var $dynamic = true;
function Go()
{
switch(isset($this->bla) && $this->bla == true)
{
case true: echo 'Called Dynamicaly<br />'; break;
case true: echo 'Called Statically<br />'; break;
}
}
}
Or:
class A
{
var $dynamic;
function A()
{
$this->dynamic = true;
}
function Go()
{
switch(isset($this->bla) && $this->bla == true)
{
case true: echo 'Called Dynamicaly<br />'; break;
case true: echo 'Called Statically<br />'; break;
}
}
}
Just some things you could try.
"Sean Malloy" <sean@element.net.au> wrote in message
news:CGEHIGJLIDDPBDNCJCMIOEMPGGAA.sean@element.net.au...
> Consider the following code...
>
> class A
> {
> function Go()
> {
> switch (isset($this))
> {
> case true: echo 'Called Dynamically<br />'; break;
> case false: echo 'Called Statically<br />'; break;
> }
> }
> }
>
> class B
> {
> function Go()
> {
> A::Go();
> }
> }
>
> A::Go();
> $a = new A();
> $a->Go();
>
> B::Go();
> $b = new B();
> $b->Go();
>
>
> My understanding is that the output should be:
>
> Called Statically
> Called Dynamically
> Called Statically
> Called Statically
>
> Yet the output is actually:
>
> Called Statically
> Called Dynamically
> Called Statically
> Called Dynamically
>
>
> Now my question is, is this what was intended?
>
> It seems that if you call a static class from within a dynamic instance of
a
> class, the static class then decides $this should reference the class from
> which the static class was called
>
> Anyone else come across this?
>
> It could be useful, but right now, its bloody annoying! I need a class to
be
> called from within another clas, and it needs to know wether it has had an
> instance created, or wether it is being statically called, and now I'll
have
> to write some kludge code instead...
>
>
>
>
> ///////////////////////////////////////////////////////////////////
> // Sean Malloy
> // Developer
> // element
> // t: +61 3 9510 7777
> // f: +61 3 9510 7755
> // m: 0413 383 683
> ///////////////////////////////////////////////////////////////////
>
> DISCLAIMER:
> © copyright protected element digital pty ltd 2002.
> the information contained herein is the intellectual property
> of element digital pty ltd and may contain confidential material.
> you must not disclose, reproduce, copy, or use this information
> in any way unless authorised by element digital pty ltd in writing
> or except as permitted by any applicable laws including the
> copyright act 1968 (cth).
>