PHP-CPP

PHP-CPP库是用于开发PHP扩展的C++库。(The PHP-CPP library is a C++ library for developing PHP extensions. )

Github星跟蹤圖

用于开发PHP扩展的C ++库。 它提供了一系列文档化和易于使用的类,可以用来扩展PHP的本机扩展。

这个C++库使PHP扩展很有趣。 基于PHP-CPP构建的扩展程序易于理解和维护简单,并且您的代码看起来很棒 - 它为您的应用程序提供了巨大的推动力!

概覽

名稱與所有者CopernicaMarketingSoftware/PHP-CPP
主編程語言C++
編程語言C++ (語言數: 4)
平台
許可證Apache License 2.0
發布數37
最新版本名稱v2.4.3 (發布於 )
第一版名稱v0.1 (發布於 )
創建於2013-08-24 06:55:45
推送於2024-05-01 16:58:21
最后一次提交2024-04-27 11:03:48
星數1.4k
關注者數119
派生數330
提交數1k
已啟用問題?
問題數373
打開的問題數88
拉請求數82
打開的拉請求數26
關閉的拉請求數50
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?

PHP-CPP

Build Status

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. The full documentation can be found on http://www.php-cpp.com.

Watch out: PHP 7 only!
This library has been updated to work with PHP versions 7.0 and up. If you wish to create
extensions for older PHP versions, use the PHP-CPP-LEGACY
library instead. The PHP-CPP and PHP-CPP-LEGACY library have (almost) identical API's,
so you can easily port extensions for PHP 5.* to PHP 7 and the other way around.

ABOUT

PHP-CPP is created and maintained by Copernica (www.copernica.com). We write
our code mostly in PHP and C++ and needed an effective way
to combine these two languages. That's where PHP-CPP comes in.
Do you appreciate our work and are you looking for other high quality solutions?

Then check out our other solutions:

The power of PHP-CPP

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:

Php::Value hello_world()
{
    return "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.add("hello_world", hello_world);

Working with parameters and return values is just as easy:

Php::Value my_plus(Php::Parameters &params)
{
    return params[0] + params[1];
}

The method call to export the above C++ function:

extension.add("my_plus", my_plus, {
    Php::ByVal("a", Php::numericType),
    Php::ByVal("b", Php::numericType)
});

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 structures 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:

Php::Value get_complex_array()
{
    Php::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")
    );
}

More information and more examples are available on the official website:
http://www.php-cpp.com.

去到頂部