Struct ext_php_rs::ffi::_zend_string[][src]

#[repr(C)]
pub struct _zend_string { pub gc: zend_refcounted_h, pub h: zend_ulong, pub len: size_t, pub val: [c_char; 1], }

Fields

gc: zend_refcounted_hh: zend_ulonglen: size_tval: [c_char; 1]

Implementations

Creates a new Zend string from a str.

Parameters
  • str - String content.
  • persistent - Whether the string should persist through the request boundary.
Returns

Returns a result containing the Zend string if successful. Returns an error if the given string contains NUL bytes, which cannot be contained inside a C string.

Panics

Panics if the function was unable to allocate memory for the Zend string.

Safety

When passing persistent as false, the caller must ensure that the object does not attempt to live after the request finishes. When a request starts and finishes in PHP, the Zend heap is deallocated and a new one is created, which would leave a dangling pointer in the ZBox.

Example
use ext_php_rs::types::ZendStr;

let s = ZendStr::new("Hello, world!", false).unwrap();

Creates a new Zend string from a CStr.

Parameters
  • str - String content.
  • persistent - Whether the string should persist through the request boundary.
Panics

Panics if the function was unable to allocate memory for the Zend string.

Safety

When passing persistent as false, the caller must ensure that the object does not attempt to live after the request finishes. When a request starts and finishes in PHP, the Zend heap is deallocated and a new one is created, which would leave a dangling pointer in the ZBox.

Example
use ext_php_rs::types::ZendStr;
use std::ffi::CString;

let c_s = CString::new("Hello world!").unwrap();
let s = ZendStr::from_c_str(&c_s, false);

Creates a new interned Zend string from a str.

An interned string is only ever stored once and is immutable. PHP stores the string in an internal hashtable which stores the interned strings.

As Zend hashtables are not thread-safe, a mutex is used to prevent two interned strings from being created at the same time.

Interned strings are not used very often. You should almost always use a regular zend string, except in the case that you know you will use a string that PHP will already have interned, such as “PHP”.

Parameters
  • str - String content.
  • persistent - Whether the string should persist through the request boundary.
Returns

Returns a result containing the Zend string if successful. Returns an error if the given string contains NUL bytes, which cannot be contained inside a C string.

Panics

Panics if the function was unable to allocate memory for the Zend string.

Safety

When passing persistent as false, the caller must ensure that the object does not attempt to live after the request finishes. When a request starts and finishes in PHP, the Zend heap is deallocated and a new one is created, which would leave a dangling pointer in the ZBox.

Example
use ext_php_rs::types::ZendStr;

let s = ZendStr::new_interned("PHP", true);

Creates a new interned Zend string from a CStr.

An interned string is only ever stored once and is immutable. PHP stores the string in an internal hashtable which stores the interned strings.

As Zend hashtables are not thread-safe, a mutex is used to prevent two interned strings from being created at the same time.

Interned strings are not used very often. You should almost always use a regular zend string, except in the case that you know you will use a string that PHP will already have interned, such as “PHP”.

Parameters
  • str - String content.
  • persistent - Whether the string should persist through the request boundary.
Panics

Panics under the following circumstances:

  • The function used to create interned strings has not been set.
  • The function could not allocate enough memory for the Zend string.
Safety

When passing persistent as false, the caller must ensure that the object does not attempt to live after the request finishes. When a request starts and finishes in PHP, the Zend heap is deallocated and a new one is created, which would leave a dangling pointer in the ZBox.

Example
use ext_php_rs::types::ZendStr;
use std::ffi::CString;

let c_s = CString::new("PHP").unwrap();
let s = ZendStr::interned_from_c_str(&c_s, true);

Returns the length of the string.

Example
use ext_php_rs::types::ZendStr;

let s = ZendStr::new("hello, world!", false).unwrap();
assert_eq!(s.len(), 13);

Returns true if the string is empty, false otherwise.

Example
use ext_php_rs::types::ZendStr;

let s = ZendStr::new("hello, world!", false).unwrap();
assert_eq!(s.is_empty(), false);

Returns a reference to the underlying CStr inside the Zend string.

Attempts to return a reference to the underlying str inside the Zend string.

Returns the None variant if the CStr contains non-UTF-8 characters.

Example
use ext_php_rs::types::ZendStr;

let s = ZendStr::new("hello, world!", false).unwrap();
let as_str = s.as_str();
assert_eq!(as_str, Some("hello, world!"));

Trait Implementations

Performs the conversion.

Performs the conversion.

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.