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).


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to