2014-09-11 11 views
6

मेरे पास सी में कुछ कोड है जो कुछ हार्डवेयर एक्सेस करता है। यह कोड तैयार है और अच्छी तरह से परीक्षण किया गया है। अब मैं इस हार्डवेयर को नियंत्रित करने के लिए एक वेब इंटरफेस को कार्यान्वित करना चाहता हूं। तो मैं जेफिर के साथ PHP विस्तार विकास के साथ आया था।क्या ज़ीफिर के साथ बाहरी पुस्तकालय शामिल करना संभव है?

मेरा सवाल यह है, "क्या ज़ेफिर के साथ बाहरी लाइब्रेरी resp को शामिल करना संभव है। इसके खिलाफ लिंक? "और यदि यह संभव है, तो मैं इसे कैसे कर सकता हूं?

उत्तर

7

हां, यह संभव है और सी-कोड के साथ काम करने के लिए दो दृष्टिकोण हैं।

CBLOCKs में सी-कोड लपेटकर

आप टैग में सी कोड एम्बेड कर सकते हैं, तो जैसे द्वारा: %{ // c-code }%

यह सुविधा अनियंत्रित है, लेकिन परीक्षणों में मौजूद है।

https://github.com/phalcon/zephir/blob/master/test/cblock.zep https://github.com/phalcon/zephir/blob/c47ebdb71b18f7d8b182f4da4a9c77f734ee9a71/test/cblock.zep#L16 https://github.com/phalcon/zephir/blob/c47ebdb71b18f7d8b182f4da4a9c77f734ee9a71/ext/test/cblock.c

%{ 
    // include a header 
    #include "headers/functions.h" 

    // c implementation of fibonacci 
    static long fibonacci(long n) { 
     if (n < 2) return n; 
     else return fibonacci(n - 2) + fibonacci(n - 1); 
    } 

}% 

थोड़ा बदसूरत लग रहा है, लेकिन काम करता है,) एक थोड़ा और अधिक सुंदर, लेकिन यह भी अधिक काम, कस्टम optimizers हैं:

एक कस्टम अनुकूलक लिखकर

एक 'अनुकूलक' काम करता है फ़ंक्शन कॉल के लिए एक इंटरसेप्टर। एक 'ऑप्टिमाइज़र' PHP उपयोगकर्तालैंड में प्रत्यक्ष सी-कॉल द्वारा फ़ंक्शन के लिए कॉल को प्रतिस्थापित करता है जो तेज़ होते हैं और प्रदर्शन में निचले ओवरहेड में सुधार होता है।

एक स्वच्छ इंटरफेस के साथ एक अनुकूलक लिखना संभव है, जिससे ज़ेफ़ीर को सी-फ़ंक्शन और डेटा प्रकार लौटाए गए पैरामीटर प्रकार को जानने की अनुमति मिलती है।

मैनुअल: https://docs.zephir-lang.com/en/latest/optimizers.html

उदाहरण (ग-समारोह फिबोनैकी करने के लिए कॉल): https://github.com/phalcon/zephir/pull/21#issuecomment-26178522

+0

आप एक Zephir पुरुष हैं? क्या आप इसे अपनी परियोजनाओं के लिए उपयोग करते हैं? – Pacerier

+1

समुदाय में रुझानों के बाद एक चारों ओर PHP लड़का। विशेष रूप से प्रदर्शन उन्मुख एक्सटेंशन जैसे फाल्कन और वाईएएफ ने मेरा ध्यान दिया। मैंने फाल्कन को अपने ढेर में डिफ़ॉल्ट एक्सटेंशन के रूप में जोड़ा है। –

संबंधित मुद्दे