title: PHP Strict Standards: Declaration of should be compatible
body: <p>I have the following hierarchy of classes:<br>
  
  
  <pre><code>class O_Base {...}
  
  class O extends O_Base {...}
  
  abstract class A_Abstract {
      public function save(O_Base $obj) {...}
  }
  
  class A extends A_Abstract {
      public function save(O $obj) {
          echo 'save!';
      }
  }
  
  $o = new O;
  $a = new A;
  
  $a-&gt;save($o);
  </code></pre>
  
  <p>When I run this code I get the message:</p>
  
  <blockquote>
    <p>Strict Standards: Declaration of A::save() should be compatible with
    A_Abstract::save(O_Base $obj) in .php on line 21</p>
  </blockquote>
  
  <p>I know about <strong>E_STRICT</strong> error level but I can't find (and understand) the reason of that behavior. Can anybody help me?</p>