دليل رموز PHP: من -> إلى ... — ماذا تعني حقًا؟
\n\nهل سبق لك أن نظرت إلى كود PHP لشخص آخر وشعرت وكأنك تقرأ كتابة هيروغليفية قديمة؟ الأسهم، النقطتان، علامات الاستفهام الغريبة — كل هذا قد يخيف حتى المطورين ذوي الخبرة. في الحقيقة، وراء كل رمز يوجد مفهوم بسيط ومنطقي.
\n\nلقد أعددنا لكم دليلًا شاملاً لرموز PHP، يحول هذه "الرموز السحرية" إلى أدوات مفهومة. هذا الدليل مبني على أحد أكثر الأسئلة شيوعًا على Stack Overflow ومُكيَّف خصيصًا لقراء pythonlib.ru. هيا بنا!
\n\n1. السهم -> (عامل الوصول إلى الكائن)
\n\nأكثر "رمز هيروغليفي" شيوعًا في PHP الكائني التوجه. السهم يعني "خذ الخاصية أو الدالة الخاصة بهذا الكائن".
\n\nclass Cat {\n public $name = 'مشمش';\n public function meow() {\n return 'مياو!';\n }\n}\n\n$cat = new Cat();\necho $cat->name; // مشمش\necho $cat->meow(); // مياو!\n\nتذكر: يسار السهم دائمًا هو الكائن ($cat)، ويمينه هو الخاصية أو الدالة بدون علامة $.
\n\n2. النقطتان المزدوجتان :: (عامل تحديد النطاق)
\n\nتُستخدم النقطتان المزدوجتان للوصول إلى الخصائص والدوال الثابتة، وثوابت الفئة، وكذلك للوصول إلى الفئة الأم.
\n\nclass MathHelper {\n const PI = 3.14;\n public static function square($x) {\n return $x * $x;\n }\n}\n\necho MathHelper::PI; // 3.14\necho MathHelper::square(5); // 25\n\nعندما ترى ::، فكر في "ثابت" أو "ثابتة". هذا هو مفتاح الفهم.
2.1 حالة خاصة: parent::
\n\nclass Animal {\n protected function sound() {\n return '...';\n }\n}\n\nclass Dog extends Animal {\n public function sound() {\n return parent::sound() . ' هاو!';\n }\n}\n\n3. علامة @ (عامل إخفاء الأخطاء)
\n\nواحدة من أكثر الرموز إثارة للجدل. @ قبل التعبير تخفي جميع الأخطاء التي قد تظهر أثناء تنفيذه.
\n\n$result = @file_get_contents('http://example.com');\n// إذا كان الموقع غير متاح، لا يظهر أي خطأ\n\nهام: لا تفرط في استخدام @! هذا يعقد عملية التصحيح. استخدمها فقط عندما تتوقع حقًا حدوث خطأ وتكون مستعدًا لمعالجته.
\n\n4. ?? (عامل الدمج مع null / Null Coalescing Operator)
\n\nظهر في PHP 7.0 وأصبح على الفور المفضل لدى المطورين. يتحقق مما إذا كان المتغير موجودًا ولا يساوي null.
\n\n$username = $_GET['user'] ?? 'ضيف';\n// إذا لم يتم تعيين $_GET['user']، يتم تعيين القيمة 'ضيف'\n\n// الطريقة القديمة:\n$username = isset($_GET['user']) ? $_GET['user'] : 'ضيف';\n\nيعمل بشكل متسلسل: $a ?? $b ?? $c — سيأخذ أول قيمة ليست null.
5. ?-> (عامل الوصول الآمن / Nullsafe Operator)
\n\nميزة جديدة من PHP 8.0. تتيح الوصول "الآمن" إلى دوال وخصائص الكائن الذي قد يكون null.
\n\nclass User {\n public function getAddress() {\n return new Address();\n }\n}\n\n// إذا لم يكن المستخدم مسجل الدخول — $user = null\n$city = $user?->getAddress()?->city;\n// بدلاً من التحقق الطويل:\n// if ($user && $user->getAddress()) { ... }\n\n6. ... (عامل التفكيك / Spread Operator)
\n\nالنقاط الثلاث "تفك" المصفوفة أو الكائن القابل للتكرار. مفيد جدًا لتمرير الوسائط إلى دالة أو دمج المصفوفات.
\n\nfunction sum(...$numbers) {\n return array_sum($numbers);\n}\n\necho sum(1, 2, 3, 4); // 10\n\n// تفكيك المصفوفة عند التمرير:\n$nums = [1, 2, 3];\necho sum(...$nums); // 6\n\n// دمج المصفوفات:\n$arr1 = [1, 2];\n$arr2 = [3, 4];\n$merged = [...$arr1, ...$arr2]; // [1, 2, 3, 4]\n\n