getFunctionsArgsInterval() public method

Ejemplo n.º 1
0
 public function analyze()
 {
     // this is for functions defined within PHP
     $data = new Methods();
     $functions = $data->getFunctionsArgsInterval();
     $argsMins = array();
     $argsMaxs = array();
     foreach ($functions as $function) {
         if ($function['args_min'] > 0) {
             $argsMins[$function['args_min']][] = '\\' . $function['name'];
         }
         if ($function['args_max'] < 100) {
             $argsMaxs[$function['args_max']][] = '\\' . $function['name'];
         }
     }
     foreach ($argsMins as $nb => $f) {
         $this->atomFunctionIs($f)->outIs('ARGUMENTS')->isLess('count', $nb)->back('first');
         $this->prepareQuery();
     }
     foreach ($argsMaxs as $nb => $f) {
         $this->atomFunctionIs($f)->outIs('ARGUMENTS')->isMore('count', $nb)->back('first');
         $this->prepareQuery();
     }
     // this is for custom functions
     $this->atomIs('Functioncall')->hasNoIn('METHOD')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->outIs('ARGUMENTS')->savePropertyAs('count', 'args_count')->inIs('ARGUMENTS')->functionDefinition()->analyzerIsNot('Functions/VariableArguments')->outIs('ARGUMENTS')->isMore('args_min', 'args_count')->back('first');
     $this->prepareQuery();
     $this->atomIs('Functioncall')->hasNoIn('METHOD')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->outIs('ARGUMENTS')->savePropertyAs('count', 'args_count')->inIs('ARGUMENTS')->functionDefinition()->analyzerIsNot('Functions/VariableArguments')->outIs('ARGUMENTS')->isLess('args_max', 'args_count')->back('first');
     $this->prepareQuery();
 }
Ejemplo n.º 2
0
 public function analyze()
 {
     $data = new Methods();
     $functions = $data->getFunctionsArgsInterval();
     $positions = array();
     foreach ($functions as $function) {
         if ($function['args_min'] == $function['args_max']) {
             continue;
         }
         if ($function['args_max'] == 100) {
             continue;
         }
         // Only test if the last is missing. This is sufficient
         $positions[$function['args_max'] - 1][] = '\\' . $function['name'];
     }
     foreach ($positions as $position => $f) {
         $this->atomFunctionIs($f)->outIs('ARGUMENTS')->noChildWithRank('ARGUMENT', $position)->back('first');
         $this->prepareQuery();
     }
 }