السلام عليكم
* الثوابت السحرية Magic constants :
- ما هى الثوابت السحرية ؟
- الثوابت السحرية هى ثوابت معرفة مسبقاً فى اللغة PHP وتقوم بعمل ثابت , وتكون على هذا الشكل __CONSTNAME__ ويوجد ثمانية ثوابت حتى الآن سنقوم بسرد عملهم :
1- __LINE__ وهو يعطينا رقم السطر الموجود به هذا الثابت .
2- __FILE__ وهو يعطينا المسار الكامل للملف الحالى .
3- __DIR__ وهو يعطينا مسار المجلد الموجود بداخلة الملف الحالى .
4- __FUNCTION__ وهو يعطينا اسم الدالة الموجود بداخلها , "تستخدم داخل الدوال"
5- __CLASS__ وهو يعطينا اسم الفئة الموجود بداخلها , "تستخدم داخل الفئات"
6- __TRAIT__ وهو يعطينا اسم السمة الموجود بداخلها , "تستخدم داخل السمات"
7- __METHOD__ وهو يعطينا اسم الدلة مسبوقاً باسم الفئة , "تستخدم داخل الدوال الموجودة بالفئات"
8- __NAMESPACE__ وهو يعطينا اسم المعرف "NAMESPACE" , "تستخدم عند تعريف معرف"NAMESPACE" فى بداية الملف"
أمثلة على ما سبق :
<?php
namespace ahmedsaoud31;
echo __LINE__ ;
echo "<br>";
echo __FILE__ ;
echo "<br>";
echo __DIR__ ;
echo "<br>";
echo dirname(__FILE__) ;
echo "<br>";
echo dirname(__DIR__) ;
echo "<br>";
echo dirname(dirname(__DIR__)) ;
echo "<br>";
function test(){
echo __FUNCTION__ ;
}
test();
?>- قبل ظهور الثابت __DIR__ كان يتم إستخدام dirname(__FILE__) لجلب مسار مجلد الملف .
أمثلة على الفئات والسمات :
<?php
trait A{
public function test(){
echo __TRAIT__ ;
echo "<br>";
echo __METHOD__ ;
echo "<br>";
echo __FUNCTION__ ;
echo "<br>";
}
}
class B{
use A;
public function test2(){
echo __CLASS__ ;
echo "<br>";
echo __METHOD__ ;
echo "<br>";
echo __FUNCTION__ ;
}
}
$obj = new B();
$obj->test();
$obj->test2();
?>وهذا مثال على المعرفات :
<?php
namespace ahmedsaoud31;
function test(){
echo __NAMESPACE__ ;
echo "<br>";
echo __FUNCTION__ ;
}
test();
?>* ملاحظة: يجب أن يكون تعريف ترميز الوثيقة هو utf-8 without BOM أو ANSI لكى يعمل الكود السابق بدون أخطاء .