Как сделать модуль PHP с языком программирования Vala? - PullRequest
4 голосов
/ 15 мая 2010

Этот новый язык под названием Vala, который называется C # -подобным и предположительно более простым, чем C ++ или C, компилируется в C на Linux с помощью компилятора GCC.

Звучит отлично. Теперь я хочу использовать его для создания модуля расширения PHP, чтобы медленный код PHP мог быть создан в Vala и импортирован в PHP как функция.

Как мне сделать это в Вала? Это вообще возможно?

Ответы [ 3 ]

2 голосов
/ 14 января 2011

Вам нужно использовать или написать (если он не существует) файл VAPI для библиотеки C, которую вам нужно использовать. Это довольно просто, вам просто нужно посмотреть на существующие примеры: http://live.gnome.org/Vala/Bindings или просто: http://git.gnome.org/browse/vala/tree/vapi

2 голосов
/ 16 января 2012

Я создал простой пример использования библиотеки Vala с других языков:

https://github.com/antono/vala-object

Привязки для библиотеки vala, сгенерированной автоматически с помощью GOobject Introspection.

https://live.gnome.org/GObjectIntrospection

Используйте gobject-for-php и получайте привязки бесплатно!

https://github.com/indeyets/gobject-for-php

2 голосов
/ 15 мая 2010

Я не знаю Vala, но если вы можете вызывать нативный код, объявлять структуры C и передавать их как указатели на указанный нативный код, и определять функции, которые используют соглашения о вызовах C, это должно быть возможно. Но это, безусловно, будет проще сделать в C / C ++.

Изменить: его домашняя страница говорит

valac создает исходные и заголовочные файлы C из исходных файлов Vala, как если бы вы написали свою библиотеку или приложение непосредственно на C. Использование библиотеки Vala из приложения C не будет отличаться от использования любой другой библиотеки на основе GObject. Не будет библиотеки времени выполнения vala, и приложения смогут распространять сгенерированный код C со своими tar-архивами, поэтому для пользователей не требуется никаких дополнительных зависимостей времени выполнения или сборки.

Итак, хотя это не является окончательным, я бы сказал, что вы, вероятно, можете.

...