در مقاله قبل با چراییِ استفاده از ++C برای نوشتن اکستنشن PHP آشنا شدید. حتما کتابخانه PHP-CPP را در لینوکس یا MacOS خود نصب کردید، اگر تا حالا انجام ندادید به مقاله اول مراجعه کنید.
بعد از نصب PHP-CPP برای شروع نوشتن اکستنشن، باید با ساختار فایلهای ضروری آشنا بشویم. در پوشه پروژه سه فایل با توضیحات زیر خواهیم داشت:
- فایل main.cpp که حاوی توابع اصلی اکستنشن ماست.
- فایل Makefile حاوی اطلاعاتی برای کامپایلر.
- فایل کانفیگ ini
در فایل Makefile اطلاعات مختلفی وجود دارد که ما فقط چند پارامتر را عوض میکنیم:
نام extension را به نام مورد نظر خود تغییر میدهیم.
NAME = hivehelloworld
مسیر قرارگیری فایل های کانفیگ PHP در سیستم خود را بیابید و در پارامتر زیر جایگزاری کنید.
INI_DIR = /etc/php5/cli/conf.d
توضیح: در لینوکس توزیع دبیان ویزی (debian wheezy) این آدرس به شکل فوق بود.
فایل کانفیگ ini
این فایل محتوای یک خطی دارد. این خط نام اکستنشن ما را به فایل کانفیگ PHP معرفی خواهد کرد.
extension=hivehelloworld
خب حالا می رویم سرِ اصل مطلب 🙂
فایل main.cpp حاوی یک تابع بنام ()get_module است. این تابع پس از بارگزاری هر کتابخانه در PHP فراخوانی میشود. کار آن بازگرداندن آدرسی از رم میباشد که اطلاعات مورد نظر درباره اکستنشن در آن آدرس بارگزاری شده است.
#include <phpcpp.h> #include <iostream> void hivehello() { Php::out << "Hello World... I'm HIVE" << std::endl; } /** * tell the compiler that the get_module is a pure C function */ extern "C" { /** * Function that is called by PHP right after the PHP process * has started, and that returns an address of an internal PHP * strucure with all the details and features of your extension * * @return void* a pointer to an address that is understood by PHP */ PHPCPP_EXPORT void *get_module() { // static(!) Php::Extension object that should stay in memory // for the entire duration of the process (that's why it's static) static Php::Extension extension("hivehelloworld", "1.0"); extension.add("hivehello", hivehello); // @todo add your own functions, classes, namespaces to the extension // return the extension return extension; } }
همانطور که در بالا مشاهده میکنید، ما یک تابع تعریف کردیم و در تابع ()get_module آن را به اکستنشن خود افزودیم.
حالا در ترمینال به پوشه حاوی سه فایل فوق می رویم و دستور زیر را اجرا می کنیم:
make
خروجی دستور فوق باید مشابه توضیحات زیر باشد:
g++ -Wall -c -O2 -std=c++11 -fpic -o main.o main.cpp g++ -shared -o hivehelloworld.so main.o -lphpcpp
حالا باید اکستنشن خود را به PHP معرفی کنیم. اگر قبلا اکستنشنی نصب کرده باشید این قسمت برای شما تکراری است:
cp -f hivehelloworld.so /usr/lib/php5/20100525/
cp -f hivehelloworld.ini /etc/php5/cli/conf.d
حال وب سرور خود را ریست کنید. سپس یک فایل با محتوای زیر بسازید و اجرا کنید:
<?php echo hivehello(); ?>
من هایو هستم.
موفق باشید…
با تشکر از مهندس ذوقی
مطالبتان فوق العاده کامل و کاربردی است
خواهش میکنم مهندس
خداروشکر
بسیار عالی بود . لطفا در مورد فریمورک Yii هم مطلب قرار بدید.
خداروشکر
مطلبی درباره قابلیتهای Yii2 در تاریخ ۱۱ بهمن ماه در هایو منتشر شده.
لینک مطلب
https://startups.ir/Aj7Wr
ان شاءالله سعی میشه با صلاح دید سردبیر، مقاله های بیشتری در زمینه فریمورک Yii نوشته و منتشر بشه.