توابع Global_Functions

📄 مستندات توابع Global_Functions

📁 مسیر:

Flare/Global_Functions/Flare.php

📘 1. View($filePath, $variables = [], $print = false)

📌 کاربرد:

نمایش یا بازگرداندن یک ویو PHP با متغیرهای داده شده.

🧪 ورودی‌ها:

  • $filePath: مسیر فایل ویو (نسبت به View/)

  • $variables: آرایه‌ای از متغیرهایی که داخل ویو در دسترس خواهند بود

  • $print: اگر true باشد، خروجی را چاپ می‌کند

✅ خروجی:

  • string: محتوای HTML تولیدشده از ویو

📝 مثال:

View('page/home', ['title' => 'خانه']);

📘 2. View2($file, $data = null)

📌 کاربرد:

لُود کردن مستقیم یک فایل ویو بدون بافر خروجی (ob_start) و با قابلیت ارسال داده.

❗ تفاوت با View:

  • فایل را مستقیم require می‌کند و خروجی باز نمی‌گرداند.

  • ساده‌تر و سریع‌تر، مناسب برای فایل‌های سبک


📘 3. redirect($url = '')

📌 کاربرد:

ساخت شیء Redirect برای انجام هدایت (Redirect) سمت مرورگر.

🔗 وابسته به:

Flare_Libraries\Redirect

📝 مثال:

 
       if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $action = $_POST['action'] ?? '';
            $id = intval($_POST['id'] ?? 0);
            $version = trim($_POST['version'] ?? '');

            switch ($action) {
                case 'add':
                    if ($version !== '') $model->add($version);
                    redirect('admin/versions')->withSuccess( 'با موفقیت اضافه شد')->send() ;
                    break;
                case 'update':
                    if ($version !== '') $model->update($id, $version);
                    redirect('admin/versions')->withSuccess( 'با موفقیت تغیرات ذخیره شد')->send() ;
                    break;
                case 'delete':
                    $model->delete($id);
                    redirect('admin/versions')->withErrors( 'با موفقیت حذف شد')->send() ;
                    break;
                case 'activate':
                    $model->toggleActive($id);
                     redirect('admin/versions')->withSuccess( 'با موفقیت انجام شد')->send() ;
                    break;
            }

            redirect('admin/versions')->withErrors( 'دستور یافت نشد!')->send();
        }

ودر سمت فرانت یا تمپلت انجین لت

{php global $session; }

{foreach ['success' => 'success', 'error' => 'danger', 'warning' => 'warning', 'info' => 'info'] as $key => $class}
    {if $session->has($key)}
        {foreach (array)$session->get($key) as $message}
            <div class="alert alert-{$class} alert-dismissible fade show" role="alert">
                {$message}
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="بستن"></button>
            </div>
        {/foreach}
        {php $session->remove($key); $session->save();}
    {/if}
{/foreach}

یا در php

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

$types = [
    'error'   => 'danger',
    'success' => 'success',
    'warning' => 'warning',
    'info'    => 'info'
    ];
    foreach ($types as $type => $bootstrapClass) {
    if (!empty($_SESSION[$type])) {
    $messages = (array) $_SESSION[$type];
    foreach ($messages as $message) {
    echo "<div class='alert alert-{$bootstrapClass} alert-dismissible fade show' role='alert'>
    <strong></strong> {$message}
  <button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'></button>
</div>";
    }
    unset($_SESSION[$type]);
    }
    }

📘 4. CautoLoader($class)

📌 کاربرد:

اتو-لودر سفارشی برای بارگذاری کلاس‌ها از مسیرهای مشخص‌شده (Libraries، Models، Controllers...)

🔍 مسیرهای جست‌وجو:

  • Flare_Libraries/

  • Models/

  • Libraries/

  • Controllers/

  • Middlewares/

⚠️ نکته:

این تابع در فایل app به این صورت spl_autoload_register('CautoLoader') در دسترس می باشد و فقط در همین تابع مسیر جدید را برای اتولود اضافه کنید یا در همان مسیر ها کلاس های خودرا بسازید 


📘 5. url($appendQuery = '', $stripQuery = false)

📌 کاربرد:

ساخت URL کامل فعلی با گزینه‌های افزودن یا حذف پارامترها.

🧪 پارامترها:

  • $appendQuery: متن یا پارامتر برای افزودن

  • $stripQuery: اگر true باشد، بخش query حذف می‌شود.

📝 مثال:

 
echo url('?lang=fa', true);

📘 6. mega_copy($source, $destination)

📌 کاربرد:

کپی کامل یک مسیر (فایل‌ها و پوشه‌ها) به یک مقصد مشخص.

💡 ویژگی:

  • بازگشتی (recursive)

  • اگر پوشه مقصد وجود نداشته باشد، ساخته می‌شود.


📘 7. check_input($input, $text = null, $method = 'AUTO', $type = 'value')

📌 کاربرد:

دریافت مقدار ورودی فرم‌ها از GET/POST و بررسی مقدار خاص (مثلاً برای checked یا selected)

🔍 مثال‌ها:

 
<input type="checkbox" name="remember" <?= check_input('remember', 'on') ?>>
 <select><option <?= check_input('gender', 'male', 'POST', 'selected') ?>></option></select>

📘 8. json_response($data = [], $status = 200)

📌 کاربرد:

بازگرداندن پاسخ JSON با کد وضعیت HTTP مشخص

📝 مثال:

json_response(['success' => true, 'msg' => 'عملیات موفق']);

📘 9. sanitizeInput($input)

📌 کاربرد:

پاک‌سازی ورودی برای حذف کاراکترهای مشکوک و جلوگیری از XSS

🧪 عملیات انجام‌شده:

  • حذف کاراکترهای غیرمجاز

  • trim

  • htmlspecialchars


📘 10. loadTranslations($lang)

📌 کاربرد:

بارگذاری ترجمه‌ها از فایل lang/{lang}.json

📁 مسیر فایل:

 
Global_Functions/lang/fa.json

✅ خروجی:

آرایه ترجمه‌ها به شکل [key => value]


📘 11. translate($key, $translations = [], $params = [])

📌 کاربرد:

دریافت مقدار ترجمه‌شده برای یک کلید و جایگزینی پارامترها

📝 مثال:

translate('welcome_msg', $translations, ['name' => 'سجاد']) // خروجی: خوش آمدی سجاد

📦 جمع‌بندی

تابع عملکرد
View, View2 نمایش ویو با داده
redirect هدایت به مسیر
CautoLoader لود خودکار کلاس‌ها
url تولید URL فعلی
mega_copy کپی پوشه‌ها و فایل‌ها
check_input خواندن امن از ورودی فرم
json_response پاسخ JSON استاندارد
sanitizeInput پاک‌سازی ورودی کاربر
loadTranslations, translate ترجمه چندزبانه