Library to build PHP extensions with C++
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 829 commits behind CopernicaMarketingSoftware:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


The PHP-CPP library is a C++ library for developing PHP extensions. It offers a collection of well documented and easy-to-use classes that can be used and extended to build native extensions for PHP.

Unlike regular PHP extensions - which are really hard to implement and require a deep knowledge of the Zend engine and pointer manipulation - extensions built with PHP-CPP are not difficult to develop at all. In fact, the only thing you need to do is write a function in C++, and the PHP-CPP library uses all the power offered by C++11 to convert the parameters and return values from your functions to/and from PHP:

std::string hello_word()
    return std::string("hello world!");

The function above is a native C++ function. With PHP-CPP you can export this function to PHP with only one single C++ method call:

extension.function("hello_world", hello_world);

Working with parameters and return values is just as easy:

int my_plus(int a, int b)
    return a+b;

The PHP-CPP library ensures that the variables from PHP (which internally are complicated C structures), are automatically converted into integers, passed to your function, and that the return value of your "my_plus" function is also converted back into a PHP variable.

Type conversion between native C/C++ types and PHP variables is handled by PHP-CPP, using features from the C++11 language. It does not matter if your functions accept strings, integers, booleans or other native parameters: PHP-CPP takes care of the conversion. The return value of your function is also transformed by PHP-CPP into PHP.

More complicated structured can be handled by PHP-CPP as well. If you would like to return a nested associative array from your function, you can do so too:

PhpCpp::Value get_complex_array()
    PhpCpp::Value r;
    r["a"] = 123;
    r["b"] = 456;
    r["c"][0] = "nested value";
    r["c"][1] = "example";
    return r;

The C++ function above is equivalent to the following function in PHP:

function get_complex_array()
    return array(
        "a" => 123,
        "b" => 456,
        "c" => array("nested_value","example")

However, this library is currently a work in progress, and it is an open source project. We are looking for people who'd like to contribute to it.

PHP-CPP is an initiative from Copernica BV.

For more information, contact me at

Emiel Bruijntjes (1 September 2013)