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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 17.3 強制模塊依賴 # 強制模塊依賴 在php 5.1中, 擴展之間的內部依賴是可以強制性的. 由于擴展可以靜態構建到php中, 也可以構建為共享對象動態加載, 因此強制依賴需要在兩個地方實現. ## 配置時模塊依賴 第一個位置是你在本章課程中剛剛看到的config.m4文件中. 你可以使用PHP\_ADD\_EXTENSION\_DEP(extname, depname\[ , optional\])宏標識extname這個擴展依賴于depname這個擴展. 當extname以靜態方式構建到php中時, ./configure腳本將使用這一行代碼確認depname必須首先初始化. optional參數是一個標記, 用來標識depname如果也是靜態構建的, 應該在extname之前加載, 不過它并不是必須的依賴. 這個宏的一個使用示例是pdo驅動, 比如pdo\_mysql是可預知依賴于pdo擴展的: ``` ifdef([PHP_ADD_EXTENDION_DEP], [ PHP_ADD_EXTENSION_DEP(pdo_mysql, pdo) ]) ``` 要注意PHP\_ADD\_EXTENSION\_DEP()宏被包裹到一個ifdef()結構中. 這是因為pdo和它的驅動在編譯大于或等于5.0版本的php時都是存在的, 然而PHP\_ADD\_EXTENSION\_DEP()宏是直到5.1.0版本才出現的. ## 運行時模塊依賴 另外一個你需要注冊依賴的地方是zend\_module\_entry結構體中. 考慮下面第5章中你定義的zend\_module\_entry結構體: ``` zend_module_entry sample_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif PHP_SAMPLE_EXTNAME, php_sample_functions, NULL, /* MINIT */ NULL, /* MSHUTDOWN */ NULL, /* RINIT */ NULL, /* RSHUTDOWN */ NULL, /* MINFO */ #if ZEND_MODULE_API_NO >= 20010901 PHP_SAMPLE_EXTVER, #endif STANDARD_MODULE_PROPERTIES }; ``` 增加運行時模塊依賴信息就需要對STANDARD\_MOUDLE\_HEADER部分進行一些小修改: ``` zend_module_entry sample_module_entry = { #if ZEND_MODULE_API_NO >= 220050617 STANDARD_MODULE_HEADER_EX, NULL, php_sample_deps, #elif ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif PHP_SAMPLE_EXTNAME, php_sample_functions, NULL, /* MINIT */ NULL, /* MSHUTDOWN */ NULL, /* RINIT */ NULL, /* RSHUTDOWN */ NULL, /* MINFO */ #if ZEND_MODULE_API_NO >= 20010901 PHP_SAMPLE_EXTVER, #endif STANDARD_MODULE_PROPERTIES }; ``` 現在, 如果ZEND\_MODULE\_API\_NO高于php 5.1.0 beta發布版, 則STANDARD\_MODULE\_HEADER(譯注: 這里原著筆誤為STANDARD\_MODULE\_PROPERTIES)將被替換為略微復雜的結構, 它將包含一個指向模塊依賴信息的引用. 這個目標結構體可以在你的zend\_module\_entry結構體上面定義如下: ``` #if ZEND_MODULE_API_NO >= 220050617 static zend_module_dep php_sample_deps[] = { ZEND_MODULE_REQUIRED("zlib") {NULL,NULL,NULL} }; #endif ``` 和zend\_function\_entry向量類似, 這個列表可以有多項依賴, 按照順序進行檢查. 如果嘗試加載某個依賴模塊未滿足, Zend將會中斷加載, 報告不滿足依賴的名字, 這樣, 終端用戶就可以通過首先加載其他模塊來解決問題. ## links - [目錄](preface.md) - 17.2 [庫的查找](17.2.html) - 17.4 [Windows方言](17.4.html)
                  <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>

                              哎呀哎呀视频在线观看