Exakat\Data\Methods::getFunctionsArgsInterval PHP Method

getFunctionsArgsInterval() public method

    public function getFunctionsArgsInterval()
    {
        $query = 'SELECT class, name, args_min, args_max FROM methods WHERE Class = "PHP"';
        $res = $this->sqlite->query($query);
        $return = array();
        while ($row = $res->fetchArray(\SQLITE3_ASSOC)) {
            $return[] = $row;
        }
        return $return;
    }

Usage Example

Example #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();
 }
All Usage Examples Of Exakat\Data\Methods::getFunctionsArgsInterval