Struct ModuleBuilder

Source
pub struct ModuleBuilder<'a> { /* private fields */ }
Expand description

Builds a Zend module extension to be registered with PHP. Must be called from within an external function called get_module, returning a mutable pointer to a ModuleEntry.

use ext_php_rs::{
    builders::ModuleBuilder,
    zend::ModuleEntry,
    info_table_start, info_table_end, info_table_row
};

#[no_mangle]
pub extern "C" fn php_module_info(_module: *mut ModuleEntry) {
    info_table_start!();
    info_table_row!("column 1", "column 2");
    info_table_end!();
}

#[no_mangle]
pub extern "C" fn get_module() -> *mut ModuleEntry {
    let (entry, _) = ModuleBuilder::new("ext-name", "ext-version")
        .info_function(php_module_info)
        .try_into()
        .unwrap();
    entry.into_raw()
}

Implementations§

Source§

impl ModuleBuilder<'_>

Source

pub fn new(name: impl Into<String>, version: impl Into<String>) -> Self

Creates a new module builder with a given name and version.

§Arguments
  • name - The name of the extension.
  • version - The current version of the extension.
Source

pub fn startup_function( self, func: unsafe extern "C" fn(_type: i32, _module_number: i32) -> i32, ) -> Self

Sets the startup function for the extension.

§Arguments
  • func - The function to be called on startup.
Source

pub fn shutdown_function( self, func: unsafe extern "C" fn(_type: i32, _module_number: i32) -> i32, ) -> Self

Sets the shutdown function for the extension.

§Arguments
  • func - The function to be called on shutdown.
Source

pub fn request_startup_function( self, func: unsafe extern "C" fn(_type: i32, _module_number: i32) -> i32, ) -> Self

Sets the request startup function for the extension.

§Arguments
  • func - The function to be called when startup is requested.
Source

pub fn request_shutdown_function( self, func: unsafe extern "C" fn(_type: i32, _module_number: i32) -> i32, ) -> Self

Sets the request shutdown function for the extension.

§Arguments
  • func - The function to be called when shutdown is requested.
Source

pub fn post_deactivate_function( self, func: unsafe extern "C" fn() -> i32, ) -> Self

Sets the post request shutdown function for the extension.

This function can be useful if you need to do any final cleanup at the very end of a request, after all other resources have been released. For example, if your extension creates any persistent resources that last beyond a single request, you could use this function to clean those up.

§Arguments
  • func - The function to be called when shutdown is requested.
Source

pub fn info_function( self, func: unsafe extern "C" fn(zend_module: *mut ModuleEntry), ) -> Self

Sets the extension information function for the extension.

§Arguments
  • func - The function to be called to retrieve the information about the extension.
Source

pub fn function(self, func: FunctionBuilder<'static>) -> Self

Adds a function to the extension.

§Arguments
  • func - The function to be added to the extension.
Source

pub fn constant( self, const: (&str, impl IntoConst + Send + 'static, DocComments), ) -> Self

Adds a constant to the extension.

§Arguments
  • const - Tuple containing the name, value and doc comments for the constant. This is a tuple to support the wrap_constant macro.
Source

pub fn class<T: RegisteredClass>(self) -> Self

Adds a class to the extension.

§Panics
  • Panics if a constant could not be registered.

Trait Implementations§

Source§

impl<'a> Debug for ModuleBuilder<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Default for ModuleBuilder<'a>

Source§

fn default() -> ModuleBuilder<'a>

Returns the “default value” for a type. Read more
Source§

impl From<ModuleBuilder<'_>> for Module

Builds a Module from a ModuleBuilder. This is used to generate the PHP stubs for the module.

Source§

fn from(builder: ModuleBuilder<'_>) -> Self

Converts to this type from the input type.
Source§

impl TryFrom<ModuleBuilder<'_>> for (ModuleEntry, ModuleStartup)

Builds a ModuleEntry and ModuleStartup from a ModuleBuilder. This is the entry point for the module to be registered with PHP.

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(builder: ModuleBuilder<'_>) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl<'a> Freeze for ModuleBuilder<'a>

§

impl<'a> !RefUnwindSafe for ModuleBuilder<'a>

§

impl<'a> !Send for ModuleBuilder<'a>

§

impl<'a> !Sync for ModuleBuilder<'a>

§

impl<'a> Unpin for ModuleBuilder<'a>

§

impl<'a> !UnwindSafe for ModuleBuilder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.