If I want to prevent a method from being called statically in PHP4, how can
I do it? So far I've tried these techniques:

<?php
class A {
var $Anotstatic;
  function A() {
    $this->Anotstatic = true;
  }
  function dynamic() {
    if (!isset($this) or !is_a($this, 'A') or !(isset($this->Anotstatic) and
$this->Anotstatic))
        echo "Method called statically\n";
    else
        echo "dynamic-only function\n";
  }
  function test ()
  {
     A::dynamic();
  }
}

class B {
function test() {
  A::dynamic();
}
}

$a = new A();
$a->dynamic();
A::dynamic();
$b = new B;
$b->test();
$a->test();
?>

This works for the first 3 tests (so I'm getting there), but not the fourth,
that is a dynamic method being called statically from an instance of the
same class. Is there something I've missed that will allow me to intercept
this style of call?

I know that this problem goes away in PHP5, and that the setting of $this in
static calls from other instances is not a bug (though it's the root of this
problem)!

Marcus
-- 
Marcus Bointon
Synchromedia Limited: Putting you in the picture
[EMAIL PROTECTED] | http://www.synchromedia.co.uk

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

Reply via email to