title: Abstract class method declaration
body: <p>I just wrote code like this:</p>
  
  <pre><code>&lt;?php
  class test
  {
  // Force Extending class to define this method
  abstract protected function getValue();
  abstract protected function prefixValue($prefix);
  
  // Common method
  public function printOut() {
      print $this-&gt;getValue() . "\n";
  }
  }
  class testabs extends test{
  
  public function getValue()
  {
  
  }
  public function prefixValue($f)
  {
  
  }
  }
  $obj = new testabs();
  ?&gt;
  </code></pre>
  
  <p>When I run this code, I received the error below:</p>
  
  <blockquote>
    <p>Fatal error: Class test contains 2 abstract methods and must therefore be declared abstract <strong>or implement the remaining methods (test::getValue, test::prefixValue)</strong> in C:\wamp64\www\study\abstract.php on line 12</p>
  </blockquote>
  
  <p>I understand the first part of this error. I changed the class test to abstract and the error is gone, but the <code>or</code> part i can't understand. </p>