title: Why does PHP 5.2+ disallow abstract static class methods?
body: <p>After enabling strict warnings in PHP 5.2, I saw a load of strict standards warnings from a project that was originally written without strict warnings:</p>
  
  <blockquote>
    <p><strong>Strict Standards</strong>: <strong>Static function</strong> Program::getSelectSQL() <strong>should not be abstract</strong> in Program.class.inc</p>
  </blockquote>
  
  <p>The function in question belongs to an abstract parent class Program and is declared abstract static because it should be implemented in its child classes, such as TVProgram.</p>
  
  <p>I did find references to this change <a href="http://php.net/manual/migration52.incompatible.php" rel="noreferrer">here</a>:</p>
  
  <blockquote>
    <p>Dropped abstract static class functions. Due to an oversight, PHP 5.0.x and 5.1.x allowed abstract static functions in classes. As of PHP 5.2.x, only interfaces can have them. </p>
  </blockquote>
  
  <p>My question is: can someone explain in a clear way why there shouldn't be an abstract static function in PHP?</p>