Attribute Macro ext_php_rs::php_module [−][src]
#[php_module]
Expand description
Annotates a function that will be used by PHP to retrieve information about the module.
In the process, the function is wrapped by an extern "C"
function which is called from PHP,
which then calls the given function.
As well as wrapping the function, the ModuleBuilder
is initialized and functions which have
already been declared with the php_function
attribute will be registered with the
module, so ideally you won’t have to do anything inside the function.
The attribute must be called on a function last, i.e. the last proc-macro to be compiled, as the attribute relies on all other PHP attributes being compiled before the module. If another PHP attribute is compiled after the module attribute, an error will be thrown.
Note that if the function is not called get_module
, it will be renamed.
If you have defined classes using the php_class
macro and you have not defined
a startup function, it will be automatically declared and registered.
Example
The get_module
function is required in every PHP extension. This is a bare minimum example,
since the function is declared above the module it will automatically be registered when the
module attribute is called.
#[php_function]
pub fn hello(name: String) -> String {
format!("Hello, {}!", name)
}
#[php_module]
pub fn module(module: ModuleBuilder) -> ModuleBuilder {
module
}