فریمورک Flare شامل توابع متعددی است که در سرتاسر برنامه قابل استفاده هستند و به شما کمک میکنند تا فرآیندهای رایج مانند رندر کردن ویوها، ریدایرکت کردن، بارگذاری کلاسها و بسیاری دیگر را به سادگی انجام دهید. این توابع در مسیر Global_Functions/Flare.php
قرار دارند و در اینجا به معرفی آنها پرداختهایم.
View
تابع View
برای رندر کردن یک فایل ویو با دادههای دلخواه استفاده میشود. این تابع به شما این امکان را میدهد که متغیرهای مختلف را به ویو ارسال کرده و آن را نمایش دهید.
function View($filePath, $variables = array(), $print = false) {
$output = NULL;
$filePath = CONFIG.'../View/'.$filePath.'.php';
if(file_exists($filePath)){
extract($variables);
ob_start();
include $filePath;
$output = ob_get_clean();
}
if ($print) {
print $output;
}
return $output;
}
View2
این تابع مشابه تابع View
است، با این تفاوت که دادههای ارسال شده به ویو به صورت مستقیم وارد متغیرهای آن فایل میشوند. این تابع برای زمانی که نیاز به رندر ساده ویو دارید، استفاده میشود.
function View2($file, $data = null) {
if (!empty($data)) {
extract($data);
}
require_once (CONFIG.'../View/'.$file.'.php');
}
redirect
تابع redirect
برای هدایت کاربران به آدرسهای مختلف استفاده میشود. این تابع به صورت خودکار آدرس را به URL کامل تبدیل کرده و کاربر را به آن ریدایرکت میکند.
function redirect($url = '') {
$url = $_ENV['URL'].$url;
header("location: " . $url);
return exit();
}
CautoLoader
تابع CautoLoader
برای بارگذاری خودکار کلاسها در پروژههای PHP استفاده میشود. این تابع به دنبال فایلهای کلاس در دایرکتوریهای مشخص شده میگردد و آنها را بارگذاری میکند.
function CautoLoader($class) {
$dirs = ['Flare_Libraries', 'Libraries', 'Controllers', 'Middlewares'];
foreach ($dirs as $dir) {
$dir = "/../$dir/";
$classNameParts = explode('\\', $class);
$class = end($classNameParts);
if (file_exists(__DIR__.$dir.$class.'.php')) {
require_once __DIR__.$dir.$class.'.php';
}
}
}
url
تابع url
برای گرفتن URL کامل از درخواست جاری استفاده میشود. این تابع آدرس کامل صفحه را بر اساس پروتکل (HTTP یا HTTPS) و مسیر جاری میسازد.
function url($string = '', $x = false): string {
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
if ($x) {
return substr($url, 0, strpos($url, "?").$string);
}
return $url.$string;
}
mega_copy
تابع mega_copy
برای کپی کردن دایرکتوریها و فایلها از یک مسیر به مسیر دیگر به طور بازگشتی استفاده میشود. این تابع ابتدا بررسی میکند که آیا دایرکتوری مقصد وجود دارد یا نه و سپس اقدام به کپی فایلها میکند.
function mega_copy($source, $destination) {
if (!is_dir($destination)) {
mkdir($destination, 0755, true);
}
$files = scandir($source);
foreach ($files as $file) {
if ($file !== '.' && $file !== '..') {
$sourceFile = $source . '/' . $file;
$destinationFile = $destination . '/' . $file;
if (is_dir($sourceFile)) {
mega_copy($sourceFile, $destinationFile);
} else {
copy($sourceFile, $destinationFile);
}
}
}
}
spa
تابع spa
برای اضافه کردن قابلیت SPA (Single Page Application) به صفحات استفاده میشود. این تابع یک اسکریپت جاوااسکریپت تولید میکند که به کمک آن میتوان محتوای صفحات را بدون رفرش مجدد بارگذاری کرد.
function spa() {
return <<<\EOT
\EOT;
}