title: Why can't you call abstract functions from abstract classes in PHP?
body: <p>I've set up an abstract parent class, and a concrete class which extends it. Why can the parent class not call the abstract function?</p>
  
  <pre><code>//foo.php
  &lt;?php
      abstract class AbstractFoo{
          abstract public static function foo();
          public static function getFoo(){
              return self::foo();//line 5
          }
      }
  
      class ConcreteFoo extends AbstractFoo{
          public static function foo(){
              return "bar";
          }
      }
  
      echo ConcreteFoo::getFoo();
  ?&gt;
  </code></pre>
  
  <p>Error: </p>
  
  <blockquote>
    <p>Fatal error: Cannot call abstract method AbstractFoo::foo() in <strong>foo.php</strong>  on line 5</p>
  </blockquote>