<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 概述 PHP中的變量是非類型化的。因此,變量可以包含任何可能的類型:整數,字符串,浮點數,甚至是對象或數組。另一方面,C ++是一種類型化的語言。在C ++中,整數變量始終具有數字值,而字符串變量始終具有字符串值 **Php :: Value對象是zval變量的包裝,但是它完全隱藏了zval處理的復雜性** ## 標量變量 ``` Php::Value value1 = 1234; Php::Value value2 = "this is a string"; Php::Value value3 = std::string("another string"); Php::Value value4 = nullptr; Php::Value value5 = 123.45; Php::Value value6 = true; ``` Php :: Value類具有強制轉換運算符,用于將對象強制轉換為幾乎所有可想到的本機類型 ``` void myFunction(const Php::Value &value) { int value1 = value; std::string value2 = value; double value3 = value; bool value4 = value; } ``` 許多不同的運算符也被重載,因此您可以**直接在算術運算中使用Php :: Value對象**,將其與其他變量進行比較,或將其發送到輸出流 ``` void myFunction(Php::Value &value) { value += 10; Php::out << value << std::endl; if (value == "some string") { } int result = value - 8; } ``` Php :: Value對象具有大多數類型的隱式構造函數。這意味著也可以使用本機類型調用每個接受Php :: Value作為參數的函數 ``` #include <phpcpp.h> Php::Value myFunction(Php::Parameters &paramas) { Php::Value value =paramas[0]; if (value == 12) { return "abc"; } else if (value > 100) { paramas.insert(paramas.begin(),12); return myFunction(paramas); } return nullptr; } extern "C" { PHPCPP_EXPORT void *get_module() { static Php::Extension extension("my_extension", "1.0"); extension.add<myFunction>("myFunction", { Php::ByVal("a", Php::Type::Numeric, true) }); return extension; } } ``` ## Php::Value 可轉字符串 ``` void myFunction(Php::Parameters &params) { // 方式一 std::string var1 = params[0]; // 方式二: Php :: Value超出范圍,就不再保證指向緩沖區的指針是有效的 const char *var2 = params[0]; size_t var2size = params[0].size(); } ``` ## Php::Value 可讀緩存區 <details> <summary>main.php</summary> ``` // 第一個示例函數更易于閱讀。 // read()系統調用用于用字節填充本地緩沖區。 // 然后將該本地緩沖區轉換為Php::Value對象并返回 Php::Value readExample1(int fd) { char buffer[4096]; ssize_t bytes = read(fd, buffer, 4096); if (bytes < 0) bytes = 0; return Php::Value(buffer, bytes); } //第二個示例函數效率更高, // 因為read()系統調用現在立即將字節讀取到Php :: Value對象的緩沖區中,而不是臨時緩沖區中 Php::Value readExample2(int fd) { // result variable Php::Value result; // 將緩沖區大小調整為4096字節,reserve()方法將調整大小 // 將內部緩沖區調整到適當大小,并返回一個指針 // 到緩沖區 char *buffer = result.reserve(4096); ssize_t bytes = read(fd, buffer, 4096); if (bytes < 0) bytes = 0; //將緩沖區的大小調整為實際字節數(this //是必需的,否則PHP strlen()將返回4096偶數 //可用字節更少時 result.reserve(bytes); return result; } ``` </details> <br /> ## Php::Value 可數組 <details> <summary>main.cpp</summary> ``` Php::Value array; array[0] = "apple"; array[1] = "banana"; array[2] = "tomato"; // //初始化器列表可用于創建填充數組 Php::Value filled({"a", "b", "c", "d"}); std::vector<std::string> fruit = array; Php::Value assoc; assoc["apple"] = "green"; assoc["banana"] = "yellow"; assoc["tomato"] = "green"; Php::Value assoc2; assoc2["x"] = "info@example.com"; assoc2["y"] = nullptr; assoc2["z"] = 123; Php::Value assoc2; assoc2["x"] = "info@example.com"; assoc2["y"] = nullptr; assoc2["z"][0] = "a"; assoc2["z"][1] = "b"; assoc2["z"][2] = "c"; std::map<std::string, std::string> map = assoc2; // 訪問 Php::out << array["x"] << std::endl; Php::out << array["y"] << std::endl; // 創建空數組 Php::Array array1; // 賦值 Php::Value array2 = array1; // 不可賦值 array1 = 100; ``` </details> <br /> ## Php::Value 可對象 就像Php :: Array類是擴展為初始化為空數組的擴展Php :: Value一樣,也有一個Php :: Object類在構造時成為對象 ``` //創建stdClass類型的空對象 Php::Object object; // Value是基類,所以你可以給Php::Object對象賦值 Php::Value value = object; // 不可,必須是對象 object = "test"; //對象屬性可以用方括號訪問 object["property1"] = "value1"; object["property2"] = "value2"; // 要創建不同類型的對象,請傳入類名 // 指向帶有可選構造函數參數的構造函數 object = Php::Object("DateTime", "now"); Php::out << object.call("format", "Y-m-d H:i:s") << std::endl; // 所有這些方法都可以在Php::Value對象上調用 Php::Value value = Php::Object("DateTime", "now"); Php::out << value.call("format", "Y-m-d H:i:s") << std::endl; ``` ## Php::Value 可迭代 ``` void myFunction(const Php::Value &value) { //值變量保存一個數組或對象,然后 //可以遍歷值或屬性 for (auto &iter : value) { Php::out << iter.first << ": " << iter.second << std::endl; } } ``` ## Php::Value 可函數 ``` // 創建一個帶有函數名的字符串 Php::Value date = "date"; // “date”是一個內置的PHP函數,因此可以調用它 Php::out << date("Y-m-d H:i:s") << std::endl; //創建日期-時間對象 Php::Object now = Php::Object("DateTime","now"); // 創建一個有兩個成員的數組 // 即datetime對象和方法的名稱 Php::Array array(); array[0] = now; array[1] = "format"; //第一個成員被看作是對象,第二個成員被看作是方法的名稱 Php::out << array("Y-m-d H:i:s") << std::endl; ``` ## 全局變量(Php:GLOBALS,Php::GET 等) Php :: GET,Php :: POST,Php :: COOKIE,Php :: FILES,Php :: SERVER,Php :: REQUEST和Php :: ENV ``` Php::GLOBALS["a"] = 12345; // //全局變量可以是任何類型 Php::GLOBALS["b"] = Php::Array({1,2,3,4}); //當然支持嵌套調用 Php::GLOBALS["b"][4] = 5; //和全局變量也可以讀取 Php::out << Php::GLOBALS["b"] << std::endl; ``` ## 小心全局C ++變量 與僅處理單個網頁瀏覽量的PHP腳本不同,擴展名用于依次處理多個網頁瀏覽量。這意味著當您在擴展程序中使用全局C ++(!)變量時,這些變量不會在兩次網頁瀏覽之間設置回其初始值。 但是,Php :: GLOBALS變量始終在每個新的綜合瀏覽量的開始處重新初始化。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看