Hi internals,
   I used to use abstract static function prior to php 5.2, because when I
consider static class as a singleton, I can use abstract static function to
delay the implementation of some methods to the derived classes. This
happens, for example, when I declare a parent dispatcher, and extend it into
two classes - action dispatcher and ajax dispatcher - and declare them
static as I want to keep them a singleton because they are just application
models, not domain models:

<?php
abstract class Dispatcher {
   abstract public static function dispatch();
   public static function exampleMethod() {
       ...
   }
}
final class ActionDispatcher {
   public static function dispatch() {
       parent::exampleMethod();
       // other code...
   }
}
final class AjaxDispatcher {
   public static function dispatch() {
       parent::exampleMethod();
       // other code...
   }
}
?>
   Unfortunately, since php 5.2, although it does still allow declaring
static methods in an interface, it simply generates a message when declaring
abstract static functions with error_reporting set to E_ALL | E_STRICT.
   PHP is a dynamic language, not static as C++ and Java. So, why not allow
abstract static functions? It is also a good way to support singleton
natively.
   Waiting for explanations. Thanks :)

--
Best regards,
Jingcheng Zhang
Room 304, Dormitory 26 of Yuquan Campus, Zhejiang University
P.R.China

Reply via email to