title: Final abstract class in PHP?
body: <p>What I want to achieve:</p>
  
  <pre><code>abstract final class NoticeTypes {
      const ERROR = "error";
      const WARNING = "warning";
      const INFO = "info";
      const SUCCESS = "success";
  
      static function getAll() {
          $oClass = new ReflectionClass(__CLASS__);
          return $oClass-&gt;getConstants();
      }
  }
  </code></pre>
  
  <p>The interpreter does not allow this:</p>
  
  <blockquote>
    <p>Fatal error: Cannot use the final modifier on an abstract class in ...</p>
  </blockquote>
  
  <p>However I want to use this as kind of a "<strong><em>constant never-modifiable enum</em></strong>". It should:</p>
  
  <ul>
  <li>not be allowed to be extended</li>
  <li>not be allowed to be instantiated</li>
  </ul>
  
  <p>Why does the Interpreter dissallow this and how shall I implement it?</p>