2016-02-23 5 views
1

Вот очень упрощенный пример:Дженерики и типа литья

function getList<Tx>():Vector<Tx> { 

    $values = ['1','2','3','4','5']; 
    $list = Vector{}; 

    foreach ($values as $value) { 
     $list->add((Tx) $value); 
    } 

    return $list; 
} 

Например, я знаю, что $ значения являются числовыми, из которой можно вывести извлечения результатов базы данных или любой другой, но хранятся в виде строк. Поэтому я хочу, чтобы бросить их в междунар через

Vector<int> $myList = $this->getList<int>(); 

но

слепков объектов, не поддерживаются. Попробуйте 'if ($ var instanceof Tx)' или 'инвариант ($ var instanceof Tx, ...)'. (Naming [2055])

Так я должен использовать две функции для различных типов в данном случае, как и getListInt():Vector<int>getListString():Vector<string> или я что-то пропустила?

ответ

-1

Так же, как обходной путь, и не очень хаклендский ответ, но я просто попытаюсь решить это в mysql. Почему бы не включить его непосредственно в mysql-запрос?

SELECT CONVERT(field_as_string,UNSIGNED INTEGER) AS num FROM table; 

Тогда ваш список представляет собой список целых чисел, и вы можете просто добавить его в вектор.