pear:rfc:pear2_standards

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pear:rfc:pear2_standards [2009/09/20 18:53] – update Base Exception Class rule based on ratification of Base Exception Interface RFC ashnazgpear:rfc:pear2_standards [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 6: Line 6:
  
   * Title: PEAR2 Coding Standards   * Title: PEAR2 Coding Standards
-  * Version:   0.5.1+  * Version:   0.6.0
   * Status:    Draft   * Status:    Draft
   * Type:      Standards   * Type:      Standards
-  * Last updated: September 16th, 2009+  * Last updated: September 20th, 2009
  
 ==== Author(s) Information ==== ==== Author(s) Information ====
Line 166: Line 166:
  
    <?php    <?php
-   if (!class_exists("PEAR2_PackageName_Driver_$class", true)) {+   if (!class_exists("\PEAR2\PackageName\Driver\$class", true)) {
        throw new \PEAR2\PackageName\Exception('Unknown driver ' . $class .        throw new \PEAR2\PackageName\Exception('Unknown driver ' . $class .
                  ', be sure the driver exists and is loaded prior to use');                  ', be sure the driver exists and is loaded prior to use');
Line 210: Line 210:
  
 ==== Class Naming convention ==== ==== Class Naming convention ====
-A class naming rule may potentially be added to these standards, if the [[pear/rfc/pear2_class_naming]] RFC is adopted. 
  
-==== Package Naming convention ==== +The naming of individual classes follows these rules: 
-A package naming rule may potentially be added to these standards, if the [[pear/rfc/pear2_naming_standards]] RFC is adopted.+  * Start with capital letter, e.g. class Foo {} 
 +  * CamelCase for multi-worded class names, e.g. class FooBarBaz {} 
 +  * Abbreviations only start with capital letter, e.g. class MrClean {} 
 +  * Acronyms should be fully capitalized, e.g. class PEARTree {} 
 +  * syntax/scope hints in the class name must be suffixed rather than prefixed, e.g. abstract class FooAbstract {} 
 +    * the suffix should be a full legible word, not a cryptic letter/abbreviation (e.g. FooAbst, FooA) 
 +    * a suffix for an Abstract or Interface class name is *required* 
 + 
 +The only exception to the Interface suffix requirement is the base package exception, which must be named simply "Exception"
 + 
 + 
 +=== Examples ==
 +Here are some real-life examples gleaned from PEAR1 packages: 
 +  * "class Text_Diff" in /Text/Diff.php becomes "class Diff" 
 +  * "class DB_DataObject" in /DB_DataObject/DataObject.php becomes "class DataObject" 
 +  * "class Auth_PrefManager" in /Auth_PrefManager/PrefManager.php becomes "class PrefManager" 
 +  * "class Services_Amazon_SQS" in Services_Amazon_SQS/Services/Amazon/SQS.php becomes "class SQS" 
 +  * "abstract class PHP_CodeSniffer_Standards_AbstractPatternSniff" in PHP_CodeSniffer/CodeSniffer/Standards/AbstractPatternSniff.php becomes "abstract class PatternSniffAbstract" 
 +  * "interface Testing_DocTest_RunnerInterface" in Testing/DocTest/RunnerInterface.php becomes "interface RunnerInterface", or perhaps "interface RunnableInterface" 
 + 
 + 
 +=== Requirement === 
 +The only exception to this rule is the Base Package Exception Interface, which is specifically required to be named "vendor\Package\Exception" rather than "vendor\Package\ExceptionInterface". 
 + 
  
 ==== Base Exception interface ==== ==== Base Exception interface ====
Line 265: Line 288:
  require_once 'PEAR2/Autoload.php';  require_once 'PEAR2/Autoload.php';
  try {  try {
-     $p = new PEAR2\PackageName\Foo();+     $p = new \PEAR2\PackageName\Foo();
      $p->run('bar');      $p->run('bar');
- } catch (PEAR2\PackageName\Exception $e) {+ } catch (\PEAR2\PackageName\Exception $e) {
      echo "Caught exception from PEAR2\\PackageName";      echo "Caught exception from PEAR2\\PackageName";
  }  }
Line 288: Line 311:
    ...    ...
    // retrieve data from info.txt    // retrieve data from info.txt
-   $info = file_get_contents(dirname(__FILE__) . '../../../data/pear2.php.net/PEAR2_PackageName/info.txt');+   $info = file_get_contents(dirname(__FILE__) . '/../../../data/pear2.php.net/PEAR2_PackageName/info.txt');
    ?>    ?>
  
pear/rfc/pear2_standards.1253472807.txt.gz · Last modified: 2017/09/22 13:28 (external edit)