رموز PHP: دليل في غابة بناء الجملة
\n\nهل سبق لك أن نظرت إلى كود PHP لشخص آخر وشعرت وكأنك تقرأ كتابات هيروغليفية قديمة؟ أسهم، نقطتان، علامات استفهام - كل هذا يمر أمام عينيك، ويرفض عقلك فهم ما يحدث. هل هذا مألوف؟ لا تقلق، لست وحدك. موضوع "ماذا يعني هذا الرمز في PHP" هو من أكثر المواضيع شيوعًا على Stack Overflow، واليوم سنقوم بترتيب كل شيء.
\n\nفي هذه المقالة، قمنا بتجميع دليل شامل لرموز PHP - من عوامل التشغيل الأساسية إلى الإنشاءات المعقدة لبناء الجملة الحديث. ستتعلم كيفية قراءة أي كود PHP بسهولة. هيا بنا!
\n\n\n\n
1. السهم -> (الوصول إلى الكائن)
\n\nالضيف الأكثر شيوعًا في أي مشروع PHP. يُستخدم السهم للوصول إلى خصائص وطرق الكائن. إذا رأيت $obj->prop - فهذا يعني أننا نصل إلى الخاصية prop للكائن $obj.
<?php\nclass User {\n public $name = 'أليكسي';\n public function greet() {\n return "مرحبًا، {$this->name}!";\n }\n}\n\n$user = new User();\necho $user->name; // أليكسي\necho $user->greet(); // مرحبًا، أليكسي!\n?>\n\nلاحظ: داخل الفئة نستخدم $this->name - وهو نفس السهم، لكنه يشير إلى الكائن الحالي.
2. النقطتان المزدوجتان :: (عامل دقة النطاق)
\n\nالنقطتان المزدوجتان هما عامل دقة النطاق. يُستخدمان للوصول إلى الخصائص الثابتة والطرق والثوابت للفئة. تذكر: إذا رأيت :: - فهذا يعني أنك تصل إلى شيء ينتمي إلى الفئة، وليس إلى نسختها.
<?php\nclass Config {\n const SITE_NAME = 'PythonLib';\n public static $version = '1.0';\n public static function info() {\n return self::SITE_NAME . ' v' . self::$version;\n }\n}\n\necho Config::SITE_NAME; // PythonLib\necho Config::$version; // 1.0\necho Config::info(); // PythonLib v1.0\n?>\n\nهنا self:: هو مرجع للفئة الحالية من داخلها. ومن الخارج نكتب اسم_الفئة::.
3. عامل الدمج مع null (??)
\n\nأحد أكثر العوامل فائدة، والذي ظهر في PHP 7. يسمح بمعالجة أنيقة للحالات التي قد يكون فيها المتغير غير معرف أو يساوي null. التعبير $a ?? $b سيعيد $a إذا كان موجودًا وليس null، وإلا سيعيد $b.
<?php\n$username = $_GET['user'] ?? 'ضيف';\n// بدلاً من البناء الطويل:\n// $username = isset($_GET['user']) ? $_GET['user'] : 'ضيف';\n\n// يمكن استخدامه في سلسلة:\n$name = $firstName ?? $nickname ?? 'مجهول';\n?>\n\n4. عامل المركبة الفضائية <=> (Spaceship)
\n\nعامل المقارنة ثلاثي الاتجاهات. يعيد -1 أو 0 أو 1 اعتمادًا على ما إذا كانت القيمة اليسرى أقل أو مساوية أو أكبر من القيمة اليمنى. مثالي للترتيب.
\n\n<?php\necho 1 <=> 2; // -1 (1 أقل من 2)\necho 2 <=> 2; // 0 (متساويان)\necho 3 <=> 2; // 1 (3 أكبر من 2)\n\n// مثال مع ترتيب مصفوفة من الكائنات\nusort($users, function($a, $b) {\n return $a->age <=> $b->age;\n});\n?>\n\n5. علامة الحذف ... (عامل الانتشار / المتغير)
\n\nثلاث نقاط يمكن أن تعني شيئين. الأول - فك المصفوفة (spread) في PHP 7.4+. الثاني - الإشارة إلى عدد متغير من وسائط الدالة (variadic).
\n\n<?php\n// 1. Spread للمصفوفات\n$parts = ['تفاحة', 'كمثرى'];\n$fruits = ['موز', ...$parts, 'برتقال'];\n// ['موز', 'تفاحة', 'كمثرى', 'برتقال']\n\n// 2. وسائط متغيرة\nfunction sum(...$numbers) {\n return array_sum($numbers);\n}\necho sum(1, 2, 3, 4); // 10\n?>\n\n6. علامة الاستفهام مع النقطتين ?: (Ternary)
\n\nالعامل الثلاثي - اختصار لـ if-else. $a ? $b : $c سيعيد $b إذا