Есть ли способ SWIG C ++ до PHP, который может привести к «статичному» перед функцией?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Есть ли способ SWIG C ++ до PHP, который может привести к «статичному» перед функцией?

Сообщение Anonymous »

Обратите внимание, что я не эксперт по Python/PHP, но мне нужно решить C ++ к корпусу PHP на перегруженных конструкторах.

Код: Выделить всё

enum Enum_Foo {
Foo_A.
Foo_B,
Foo_C
};

enum Enum_Bar {
Bar_A.
Bar_B,
Bar_C
};

class Creator
{
public:
Creator();
Creator(Enum_Foo);
Creator(Enum_Bar);
};
< /code>
SWIG жалуется на перегруженные методы, и это нормально. Рекомендация заключается в том, чтобы использовать %rename 
для второго метода (конструктор), и я делаю это как:

Код: Выделить всё

Python.i
:

Код: Выделить всё

%rename (CreatorFromBar) Creator::Creator(Enum_Bar);
< /code>
Результат Python-это функция (немного переработана из оригинала): < /p>
def CreatorFromBar(in_enum_bar):
val = _SomeNamespacePython.new_CreatorFromBar(in_enum_bar)
return val
< /code>
, который может быть использован в конечном коде Python как: < /p>
    bar = Enum_Bar.Bar_A
creator = CreatorFromBar(bar)
< /code>
Но PHP - это другой случай: < /p>
PHP.i
:

Код: Выделить всё

%rename (CreateFromBar) Creator::Creator(Enum_Bar);
< /code>
Результат PHP-это метод класса (немного переработана из оригинала): < /p>
class Creator {
...
function CreateFromBar($in_enum_bar_type) {
...
return new Creator(new_CreateFromBar($in_enum_bar_type));
}
...
}
, который можно использовать в конечном коде PHP только as:

Код: Выделить всё

    $enum_bar = Enum_Bar::Bar_A;
$dummy = new Creator();
$correct = $dummy->CreatorFromBar($enum_bar);
Если результат SWIG был со статичным Qualifier-он был бы назван как:

Код: Выделить всё

    $enum_bar = Enum_Bar::Bar_A;
$correct = Creator::CreatorFromBar($enum_bar);
Вопросы :

Есть ли способ заставить Static перед результатом SWIG функции PHP?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... a-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»