title: PHP differences between abstract public static vs abstract static public
body: <p>I mistakenly defined the method signature as</p>
  
  <p><code>abstract static public function mapAttributeKeys(array $attributes)</code></p>
  
  <p>It works properly, but while I'm refactoring the code, I see it is not looks well and it should be as following according to my habit.</p>
  
  <p><code>abstract public static function mapAttributeKeys(array $attributes)</code></p>
  
  <p>I little surprised how these two works. I was thinking the above syntax is a wrong syntax.</p>
  
  <p>So these two are working. Is there any reason why the definition is not stricted ? Or something like a pattern match here ?</p>
  
  <p>My actual aim is to learn why these flexibility is exist ? Is there any special approach or implementation trick exist ?</p>
  
  <p>Updated :</p>
  
  <p>I saw <a href="https://stackoverflow.com/a/10740068/1147648">https://stackoverflow.com/a/10740068/1147648</a> this explanation really meaningful.</p>
  
  <pre><code>An abstract function will never be static, in any kind of language
  </code></pre>
  
  <p>if it is true, why there is implementation exist ?</p>
  
  <p>Even in symfony validator loader.</p>
  
  <p><a href="https://github.com/symfony/validator/blob/master/Tests/Mapping/Loader/AbstractStaticMethodLoader.php" rel="nofollow noreferrer">https://github.com/symfony/validator/blob/master/Tests/Mapping/Loader/AbstractStaticMethodLoader.php</a></p>