حتما تاکنون در حین برنامه نویسی ، جایی نیاز شده از ثابت ها استفاده کنید؛ که در استفاده از ثابت ها در PHP به یک دوراهی برخورد می کنیم. اگر از تفاوت Const و Define که بسیار مهم است آگاهی نداشته باشید، قطعا در توسعه برنامه خود دچار مشکل خواهید شد.
PHP برای این کار دو تابع قدرتمند و کاربردی Const و Define را در این زمینه معرفی کرده است .
که باید بر حسب نیاز و امکانات برنامه هر تابع از آن استفاده کنیم.
دراین آموزش کوتاه ۵ دقیقه ای باهم به بررسی تفاوت Const و Define می پردازیم….
مقایسه define و const در php
ثابت های Const ، در زمانی که کد ها کامپایل می شوند تعریف می شوند ،
ولی ثابت های Define در زمان اجرای برنامه تعریف می شوند.
جهت تعریف ثابت های Const حتما باید در بالاترین خط و بیرون از هر بلاک خاصی ، آنها را تعریف کنید.
همچنین با توجه به این موضوع ، ثابت های Const را نمی توانید در هیچ شرطی استفاده کنید.
اما در مورد ثابت های Define داستان به شکل دیگری رقم خورده است…
for ($i=0;$i<30;$i++){ define("day", $i); }
Const فقط تنها مقدار هایی مانند Boolean ، Number ، String و … را می پذیرد،
این در صورتی است که Define هر عبارتی را حتی به صورت داینامیک قبول می کند.
تفاوت بعدی که وجود دارد، این است که باید در تعریف ثابت های Const
به بزرگی (Upper Case) و کوچکی (Lower Case) نام آن دقت کنید ؛ زیرا Const اصطلاحاً به حالت حساس است.
اما Define به صورت پیشفرض ، حساس به بزرگی و کوچکی نام ثابت نیست ،
البته می توانید با استفاده از پارامتر اختیاری (Optional) این تابع را نیز نسبت که کوچکی و بزرگی حساس کنید.
define("IRAN123", "programming", true);
توجه کنید که وقتی که یک ثابت Const تعریف می کنید، آن را تنها در همان فضای نام (Namespace) ، تعریف کردید.
در صورتی که ثابت های Define تمام فضای برنامه ها در بر می گیرند و در همه جای برنامه به راحتی قابل فراخوانی می باشند.
مقایسه سرعت define و const
سرعت Const ها مقداری از ، Define ها بیشتر است.
اما در عوض ثابت هایی که با Define تعریف می شوند ، فضای کمتری را اشغال می کنند.
و با Define عملاً ثابتی تعریف نمی شود ، بلکه یک متغیر به صورت جایگذاری انجام می شود.
تعریف آرایه ثابت با define
تفاوت دیگر Define و Const که در نسخه PHP 7.0 به تشابه تبدیل شد این است که در نسخه های پایین تر PHP 7.0 امکان تعریف آرایه ثابت با Define وجود نداشت؛
و این امر تنها با Const امکان پذیر بود، در صورتی که در PHP 7.0 به بعد می توانیم حتی از Define نیز آرایه های ثابت تولید کرد.
و در پایان حواستان باشد که ، نمی توان از Const ثابت هایی با وسطح دسترسی Private تعریف کرد ،
در صورتی که این عمل در Define امکان پذیر است.
در پناه الله یکتا شاد و پیروز باشید!