title: What is the meaning of the `allow_string` argument to `is_a`?
body: <p>PHP recently added a <a href="http://php.net/manual/en/function.is-a.php#refsect1-function.is-a-changelog" rel="nofollow">third argument</a> to the <code>is_a</code> function. It's a boolean, and the documentation says,</p>
  
  <blockquote>
    <p>If this parameter set to FALSE, string class name as object is not allowed. This also prevents from calling autoloader if the class doesn't exist. </p>
  </blockquote>
  
  <p>I don't get it. I get that you can prevent calling the autoloader unnecessarily, but it doesn't prevent you passing a string as a class name:</p>
  
  <pre><code>&gt; class A {}
  &gt; $x = new A();
  &gt; echo is_a($x, 'A', false);
  1
  </code></pre>
  
  <p>…in fact, you can't ever pass anything <em>but</em> a string:</p>
  
  <pre><code>&gt; echo is_a($x, A, false);
  PHP Notice:  Use of undefined constant B - assumed 'A' in php shell code on line 1
  PHP Stack trace:
  PHP   1. {main}() php shell code:0
  
  Notice: Use of undefined constant B - assumed 'A' in php shell code on line 1
  
  Call Stack:
     18.7644     625048   1. {main}() php shell code:0
  
  1
  </code></pre>
  
  <p>That error message doesn't change when you change the third argument. What does <em>string class name as object</em> actually mean?</p>