<?php 
// in this example we will add rule about namespaces: 
//   - there must be only 1 namespace per line (check for new line before "namespace") 
//   - there must be strictly one space after "namespace" 
//   - there must be no spaces before ";" in namespace definition 
//   - there must be no spaces in namespace name: 
//       * no spaces before and after "\" (T_NS_SEPARATOR) 
//       * no spaces before and after path segment name (T_STRING) 
 
// formatted example: 
//    <?php 
//     
//    namespace \Hello\World; 
//    namespace \Something\Else; 
 
// you specify formatting by modifying $controls: 
// $controls = array( TOKEN_NAME => array( CTX_NAME => rule[, PHPCF_KEY_ALL => rule] ) ); 
 
$controls += [ 
    // rule for both T_NS_SEPARATOR and T_STRING 
    'T_NS_SEPARATOR T_STRING' => [ 
        // in our defined context CTX_NAMESPACE_D 
        'CTX_NAMESPACE_D' => [ 
            // rules described in more details below 
            PHPCF_KEY_DESCR_LEFT => 'No spaces before "\" and segment name in namespace definition', 
            PHPCF_KEY_LEFT => PHPCF_EX_DELETE_SPACES, 
            PHPCF_KEY_DESCR_RIGHT => 'No spaces after "\" and segment name in namespace definition', 
            PHPCF_KEY_RIGHT => PHPCF_EX_DELETE_SPACES, 
        ], 
    ], 
    // rule for "namespace" 
    'T_NAMESPACE' => [ 
        // rule for "namespace" in context "CTX_NAMESPACE_D", defined in "context-rules.php" 
        'CTX_NAMESPACE_D' => [ 
            // description of operation that needs to be performed for whitespace to the left of token 
            PHPCF_KEY_DESCR_LEFT => '1 or 2 new lines before "namespace"', 
            // for whitespace on the left of token, do the following: PHPCF_EX_CHECK_NL (check for "\n" or "\n\n") 
            PHPCF_KEY_LEFT => PHPCF_EX_CHECK_NL, 
            // description for whitespace on the right 
            PHPCF_KEY_DESCR_RIGHT => 'Space after "namespace"', 
            // for whitespace on the right, shink whitespace to " " with higher priority than PHPCF_EX_DELETE_SPACES 
            // that is defined for "\" (T_NS_SEPARATOR) or segment name (T_STRING) in namespace context 
            PHPCF_KEY_RIGHT => PHPCF_EX_SHRINK_SPACES_STRONG, 
        ], 
    ], 
    // there will be no additional rules required for ";", as there already exists the rule that is exactly what we need: 
    /* 
    ';' => array( 
        PHPCF_KEY_ALL => array( 
            PHPCF_KEY_DESCR_LEFT => 'No whitespace before ";"', 
            PHPCF_KEY_LEFT => PHPCF_EX_DELETE_SPACES_STRONG, 
            PHPCF_KEY_DESCR_RIGHT => '1 or 2 newlines after ";"', 
            PHPCF_KEY_RIGHT => PHPCF_EX_CHECK_NL, 
        ), 
        ... 
    ), 
    */ 
]; 
 
 |