Web Programmer
32 subscribers
7 photos
5 videos
5 links
پشتیبان چنل: @Bot_MoMi
Download Telegram
🧩 قابلیت ::class در PHP

از نسخه‌ی PHP 5.5 به بعد، قابلیتی به نام ::class اضافه شد که مسیر کامل یک کلاس (همراه با namespace) را به صورت رشته برمی‌گرداند.

مثلاً:
namespace App\Core;

class ExitProcess {}

echo ExitProcess::class;

//result: App\Core\ExitProcess

این یعنی ::class فقط نام کامل کلاس را به‌صورت string برمی‌گرداند و کاری اجرا نمی‌کند.

🔹 self::class
نام همان کلاسی را برمی‌گرداند که کد درون آن نوشته شده است.
یعنی حتی اگر کلاس فرزند آن را صدا بزند، باز هم اسم کلاس والد برمی‌گردد.

🔹 static::class
برعکس self، در زمان اجرا بررسی می‌کند شیء واقعاً از چه کلاسی ساخته شده است.
پس اگر کلاس فرزند از کلاس والد ارث‌بری کرده باشد، static::class نام کلاس فرزند را می‌دهد.

🔹__CLASS__
یک
ثابت جادویی (magic constant) است که همیشه نام کلاسی که کد در آن نوشته شده را برمی‌گرداند.
تقریباً معادل self::class است و تفاوت جزئی در بافت استفاده دارد.


📘 خلاصه:

ExitProcess::class مسیر کامل کلاس به‌صورت رشته برمی‌گرداند.


self::class نام همان کلاس فعلی را می‌دهند.


static::class نام کلاس واقعی در زمان اجرا را برمی‌گرداند (حتی اگر از ارث‌بری استفاده شود).
‼️ ممکنه همچنین ساختاری در توابع دیدید، یا به اشتباه ازش استفاده کنید:
function fnc1() {
echo "fnc1";
return false;
}

function fnc2() {
echo "&&fnc2";
return true;
}

return fnc1() && fnc2();
💡 بررسی عمیق تابع intval() و (int) در PHP:

معمولا (int) یا intval() وقتی می‌خوایم یک مقدار رو به نوع عدد صحیح تبدیل کنیم استفاده می‌شه.




مثال ساده:

// intval(): 
var_dump(intval("1234")); // نتیجه: int(1234)
var_dump(intval("42abc")); // نتیجه: int(42)
var_dump(intval("abc42")); // نتیجه: int(0)
//یا (int):
var_dump((int)"1234ee41"); // int(1234)
var_dump((int)"jj1234ee41"); // int(0)
var_dump((int)"42abc"); // int(42)


خیلی‌ها فکر می‌کنن intval() یا (int) کل رشته رو بررسی می‌کنه و اگر جز عدد کاراکتر دیگه‌ای بود، صفر می‌ده.
اما intval() یا (int) فقط از ابتدای رشته شروع می‌کنه به خواندن عدد.
- اگر ابتدای رشته عدد باشه، تا جایی که عدد هست ادامه می‌ده و بعد متوقف می‌شه.
- اگر ابتدای رشته عدد نباشه، نتیجه 0 خواهد بود.



مثال توضیحی:

var_dump(intval("1234ee41")); // ابتدای رشته عدد هست → int(1234)
var_dump(intval("jj1234ee41")); // ابتدای رشته عدد نیست → int(0)




نکته: تا نسخه 8.4، این رفتار بدون تغییر بوده است و ممکن است در نسخه‌های بعدی متفاوت عمل کند.


#برسی_عمیق_توابع
شاید واستون پیش امده، بخواین متنتون حتما راست‌چین یا چپ‌چین باشه، اینجا دوتا کارکتر کاربردی بهتون معرفی میکنم که به راحتی این کارو انجام بده.


• راست چین کردن:
[ ]

|> مثال:
||> متن عادی:
PHP یک زبان برنامه نویسی است.

||> متن راست‌چین شده:
‏PHP یک زبان برنامه نویسی است.


• چپ چین کردن:
[ ]

|> مثال:
||> متن عادی:

پی‌اچ پی is a programming language.

||> متن چپ‌چین شده:
‎پی‌اچ‌پی is a programming language.


💡نکته: برای کوپی کردنشون، داخل پرانتز کلیک کنید کوپی میشه، اول متنتون قرار بدین.