title: Loosely coupled dependencies: How?
body: <p>How do I best decouple two classes but still have them depend on each other?</p>
  
  <p>I have constructor arguments with type hinting:</p>
  
  <pre><code>public function __construct(\namespace\Interface1 $class1,
      \namespace\Interface2 $class2,
      \other\namespace\Abstract1 $class3){
  </code></pre>
  
  <p>But is this as tightly coupled as, say:</p>
  
  <pre><code>new \namespace\Class1();
  </code></pre>
  
  <p>Any other methods welcome.</p>