преобразование типов C ++ std :: map в PHP с использованием SWIG

У меня есть расширение PHP, которое находится в C ++, и я использовал SWIG, чтобы обернуть его. Я пытаюсь создать класс, который реализован в C ++ как таковой:

Package(const std::map<std::string,std::string> &input_map, const std::queue<std::string> &dates_queue);

в PHP с помощью этого скрипта:

<?php
require "prq.php";

$input = array("dataset" => "a050119", "station" => "a050119", "flag" => "1");
$dates = array(1 => "read;chunk;2015-07-01 00:00;2015-07-02 00:00");

$package = new Package($input, $dates);
?>

но я получаю ошибку:

PHP Fatal error:  Type error in argument 1 of new_Package. Expected SWIGTYPE_p_std__mapT_std__string_std__string_t in /home/jlahowetz2/development/package-request-queue/swig/prq.php on line 230

что имеет смысл … Я понятия не имею, как реализовать std :: map в PHP. Я посмотрел на оболочку C ++, созданную SWIG, и нашел преобразование типа для этого:

static swig_type_info _swigt__p_std__mapT_std__string_std__string_t = {"_p_std__mapT_std__string_std__string_t", "std::map< std::string,std::string > *", 0, 0, (void*)0, 0};

Мой вопрос: как я могу использовать это преобразование типов в PHP, чтобы передать std :: map моему конструктору? Спасибо много.

1

Решение

добавлять

%template(mapStuff) std::map<std::string, std::string>;

к файлу интерфейса, тогда в PHP обработайте его как прокси-класс.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]