Expand description
PHPER (PHP Enjoy Rust)
Rust ❤️ PHP
The framework that allows us to write PHP extensions using pure and safe Rust whenever possible.
Requirement
Necessary
- rust 1.56 or later
- libclang 9.0 or later
- php 7.0 or later
Tested Support
- OS
- linux
- macos
- windows
- PHP
- version
- 7.0
- 7.1
- 7.2
- 7.3
- 7.4
- 8.0
- 8.1
- mode
- nts
- zts
- sapi
- cli
- fpm
- debug
- disable
- enable
- version
Usage
-
Make sure
libclang
andphp
is installed.sudo apt install llvm-10-dev libclang-10-dev php-cli
-
Create you cargo project, suppose your application is called myapp.
cargo new myapp
-
Add the dependencies and metadata to you Cargo project.
[lib] crate-type = ["cdylib"] [dependencies] phper = "<LATEST VERSION>"
-
Add these code to
main.rs
.use phper::cmd::make; fn main() { make(); }
-
Write you owned extension logic in
lib.rs
.use phper::{php_get_module, modules::Module}; #[php_get_module] pub fn get_module() -> Module { let mut module = Module::new( env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"), env!("CARGO_PKG_AUTHORS"), ); // ... module }
-
Build and install, if your php isn’t installed globally, you should specify the path of
php-config
.cargo build --release cargo run --release -- install
-
Edit your
php.ini
, add the below line.extension = myapp
-
Enjoy.
Examples
See examples.
License
Re-exports
pub use crate::errors::Error;
pub use crate::errors::Result;
pub use phper_alloc as alloc;
pub use phper_sys as sys;
Modules
Apis relate to crate::sys::zend_array.
Apis relate to crate::sys::zend_class_entry.
Command tools for build, test and install extension process.
The errors for crate and php.
Apis relate to crate::sys::zend_function_entry.
Apis relate to crate::sys::zend_ini_entry_def.
Apis relate to crate::sys::zend_module_entry.
Apis relate to crate::sys::zend_object.
Logs and echo facilities.
Apis relate to crate::sys::zend_resource.
Apis relate to crate::sys::zend_string.
Apis relate to PHP types.
Apis relate to crate::sys::zval.
Macros
C style string end with ‘\0’.
C style string end with ‘\0’.
Equivalent to the php CG
.
PHP deprecated logging.
PHP echo.
Equivalent to the php EG
.
PHP error logging, will exit the request.
PHP notice logging.
Equivalent to the php PG
.
Equivalent to the php SG
.
PHP warning logging.
Attribute Macros
PHP module entry, wrap the phper::modules::Module
write operation.
Derive Macros
Auto derive for phper::errors::Throwable
.