title: How to add classname type to the parameter of abstract method?
body: <p>I have an abstract class with this method:</p>
  
  <pre><code>abstract class X {
     abstract public function method( $param );
  }
  </code></pre>
  
  <p>In the implementation I do:</p>
  
  <pre><code>class Y extends X {
     public function method( ClassName1 $param )
     {
         ...
     }
  }
  
  class W extends X {
     public function method( ClassName2 $param )
     {
         ...
     }
  }
  </code></pre>
  
  <p>I need to put the <code>ClassName1</code> and the <code>ClassName2</code> in both methods, but I get this error:</p>
  
  <p>Declaration of <code>Y::method()</code> must be compatible with <code>X::method($param)</code> in ...</p>
  
  <p>What I need to declare the abstract method in class X to solve the problem?
  The real question maybe: What be the class name in <code>X::method( _____ $param )</code> to solve the problem?</p>
  
  <p>Thanks.</p>