۶ دانشجوی سون‌لرن
دلیل تعریف تابع extract چیست؟
جامعه پی اچ پی ایجاد شده در ۱۲ اردیبهشت ۱۴۰۱

سلام. در این پروژه از طریق کد زیر صفحه ایندکس رو لود میکنیم

public function __construct()
    {
        $this->contactModel = new Contact();
    }
    public function index()
    {
        $data = [
            'contacts' => $this->contactModel->getAll()
        ];
        view('home.index', $data);
    }

کلاس Contact هم حاوی کد زیر هست:

class Contact extends MysqlBaseModel
{
    protected $table = 'contacts';
}

پس در کد اول، آدرس صفحه ایندکس + یه دیتا رو به view میفرستیم. (دیتا حاوی اطلاعات موجود در دیتابیس ما هست)

حالا داخل view این کد هست:

function view($path, $data = [])
{
    extract($data);
    $path = str_replace('.', '/', $path);
    $view_full_path = BASEPATH . "views/$path.php";
    include_once $view_full_path;
}

در اینجا view میاد ابتدا یه دیتا رو extract میکنه. بعد هم اون آدرس که بهش دادیم رو include میکنه

حالا سوال من اینه که کد زیر چرا اطلاعات دیتابیس رو به اینجا فرستادیم و extract شد؟ چرا بعد از extract دیگه رها شد و استفاده نشد؟ اصلا چه نیازی بود؟

سلام دوست عزیز

تابع extract یه int برمیگردونه و نباید بریزیمش داخل متغیر خودش اطلاعات رو در حافظه در حال اجرا ذخیره میکنه

مثال از سایت php

$size "large";
$var_array array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color$size$shape$wddx_size\\n";

موفق باشید ??


محمد گازری ۱۲ اردیبهشت ۱۴۰۱، ۱۸:۰۰

این مثال رو از سایت خوندم. کاربردش رو میدونم. ولی در این کد که گذاشتم چه استفاده ای داره؟

سیدرضا بازیار ۱۲ اردیبهشت ۱۴۰۱، ۱۸:۰۴

برای اینکه در ویوو راحت‌تر استفاده کنیم از دیتا

محمد گازری ۱۲ اردیبهشت ۱۴۰۱، ۱۸:۰۵

خب ازش استفاده نشده که. در view یه آدرس رو include میکنه

سیدرضا بازیار ۱۲ اردیبهشت ۱۴۰۱، ۱۸:۰۶

ارتباطی به include نداره

زمانی که اکسترکت میکنیم دیتا رو خودش وارد حافظه در حال اجرا میکنه و توی ویو در دسترس هست اون دیتا

محمد گازری ۱۲ اردیبهشت ۱۴۰۱، ۱۸:۱۰

در گوگل میت توضیح داده شد!

بهترین پاسخ
محمد گازری ۱۲ اردیبهشت ۱۴۰۱، ۱۸:۲۰