CLI
کدهای php علاوهبر ساخت صفحات وب میتواند برای اجرای برنامه از طریق خط فرمان نیز استفاده شود؛ به همین منظور php از CLI که مخفف عبارت Command Line Interface یا رابط خط فرمان میباشد پشتیبانی میکند.
در جالنو برای کار با خط فرمان کلاس packages\base\CLI
ایجاد شده است.
در کلاس CLI متدهای زیر تعریف شده است متدها برای سهولت استفاده بصورت استاتیک تعریف شدهاند.
متد | کاربرد |
---|---|
set() | این متد کلاس را برای استفاده آماده سازی میکند این متد به صورت خودکار توسط فرم ورک فرخوانی میشود |
getParameter(string $name): ?string | مقدار پارامتر دریافتی را برمیگرداند |
getParameters(array $params): array | تبدیل پارامترهای دریافتی به آرایه کلید مقدار |
readLine(string $message): string | گرفتن مقدار ورودی از خط فرمان |
اجرا برنامه از طریق خط فرمان
برای اجرای برنامه لازم است از طریق ترمینال به شاخه اصلی پروژه رفته و فایل index.php را اجرا کنید. آدرس روندی که قصد اجرای آن را دارید در آرگومان process همراه دستور ارسال کنید.
php index.php --process=packages/packagename/processes/Main@index
برای اطلاعات بیشتر به صفحه ی روند مراجعه کنید.
در php آرگومانهای ارسالی بصورت رشته دریافت میشود. در جالنو برای پردازش بهتر، آرگومانها به آرایه کلید مقدار تبدیل میشوند.
زمانی که دستور فوق اجرا شود ابتدا متد set
اجرا شده و آرگومانهای ورودی را بصورت آرایه در متغیر $request['parameters'] کلاس ذخیره میکند.
عملیات تبدیل آرگومان به آرایه توسط متد getParameters
انجام میشود.
همچنین ID پروسس نیز در متغیر $process['pid'] کلاس دخیره میشود.
گرفتن مقدار آرگومان ورودی
با فراخوانی متد getParameter
میتوانید به آرگومان ورودی دسترسی داشته باشید.
ورودی این متد نام آرگومان میباشد.
آرگومانهای ورودی باید بصورت --key=value
وارد شوند. فرمورک آرگومانها را به آرایهای با کلید key و مقدار value تبدیل میشود.
اگر آرگومان ورودی بصورت --arg
باشد به آرایهای با کلید arg
و مقدار 1
تبدیل میشود.
php index.php --process=packages/packagename/processes/Main@index --name=ali --password=123456
<?php
namespace packages\packagename\processes;
use packages\base\{Process, CLI};
class Main extends Process {
public function index($data) {
echo CLI::getParameter("name"); //output: ali
echo CLI::getParameter("password"); //output: 123456
/**
* Or
* echo $data["name"];
* echo $data["password"];
*/
}
}
گرفتن مقدار ورودی از خط فرمان
با فراخوانی متد readLine
میتوانید دادههایی را از خط فرمان دریافت کنید. همچنین میتوانید رشتهای را به ورودی متد readLine داده تا قبل از دریافت ورودی از کاربر، متن را نمایش دهد. آرگومان ورودی متد اختیاری میباشد.
خروجی متد readLine مقداری است که از ورودی دریافت شده است.
<?php
namespace packages\packagename\processes;
use packages\base\{Process, CLI};
class Main extends Process {
public function index($data) {
if (!isset($data["email"])) {
$data["email"] = CLI::readLine("please enter your email:\n");
}
echo "your email is : " . $data["email"] . "\n";
}
}
روند اجرای کد فوق بصورت زیر میباشد
$ php index.php --process=packages/jalno/processes/Main@index
please enter your email:
[email protected]
your email is : [email protected]