Exakat\Data\Methods::getFunctionsByReturn PHP Method

getFunctionsByReturn() public method

    public function getFunctionsByReturn()
    {
        $return = array();
        $query = <<<SQL
SELECT return, lower(GROUP_CONCAT('\\' || name)) AS functions FROM args_type WHERE class='PHP' GROUP BY return
SQL;
        $res = $this->sqlite->query($query);
        while ($row = $res->fetchArray(\SQLITE3_ASSOC)) {
            $return[$row['return']] = explode(',', $row['functions']);
        }
        return $return;
    }

Usage Example

Example #1
0
 public function analyze()
 {
     // Function returning a type, then casted to that type
     $casts = array('T_STRING_CAST' => 'string', 'T_BOOL_CAST' => 'bool', 'T_INT_CAST' => 'int', 'T_ARRAY_CAST' => 'array', 'T_DOUBLE_CAST' => 'real');
     $data = new Methods();
     $returnTypes = $data->getFunctionsByReturn();
     foreach ($casts as $token => $type) {
         $this->atomIs('Cast')->tokenIs($token)->outIs('CAST')->outIsIE('CODE')->atomIs('Functioncall')->fullnspathIs($returnTypes[$type])->back('first');
         $this->prepareQuery();
     }
     // (bool) ($a > 2)
     $this->atomIs('Cast')->tokenIs('T_BOOL_CAST')->outIs('CAST')->outIsIE('CODE')->atomIs('Comparison')->back('first');
     $this->prepareQuery();
 }