دليل رموز PHP: معنى ->, ::, @ وغيرها

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

دليل رموز PHP: من -> إلى ... — ماذا تعني حقًا؟

\n\n

هل سبق لك أن نظرت إلى كود PHP لشخص آخر وشعرت وكأنك تقرأ كتابة هيروغليفية قديمة؟ الأسهم، النقطتان، علامات الاستفهام الغريبة — كل هذا قد يخيف حتى المطورين ذوي الخبرة. في الحقيقة، وراء كل رمز يوجد مفهوم بسيط ومنطقي.

\n\n

لقد أعددنا لكم دليلًا شاملاً لرموز PHP، يحول هذه "الرموز السحرية" إلى أدوات مفهومة. هذا الدليل مبني على أحد أكثر الأسئلة شيوعًا على Stack Overflow ومُكيَّف خصيصًا لقراء pythonlib.ru. هيا بنا!

\n\n

1. السهم -> (عامل الوصول إلى الكائن)

\n\n

أكثر "رمز هيروغليفي" شيوعًا في PHP الكائني التوجه. السهم يعني "خذ الخاصية أو الدالة الخاصة بهذا الكائن".

\n\n
class 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\n

2. النقطتان المزدوجتان :: (عامل تحديد النطاق)

\n\n

تُستخدم النقطتان المزدوجتان للوصول إلى الخصائص والدوال الثابتة، وثوابت الفئة، وكذلك للوصول إلى الفئة الأم.

\n\n
class 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

عندما ترى ::، فكر في "ثابت" أو "ثابتة". هذا هو مفتاح الفهم.

\n\n

2.1 حالة خاصة: parent::

\n\n
class 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\n

3. علامة @ (عامل إخفاء الأخطاء)

\n\n

واحدة من أكثر الرموز إثارة للجدل. @ قبل التعبير تخفي جميع الأخطاء التي قد تظهر أثناء تنفيذه.

\n\n
$result = @file_get_contents('http://example.com');\n// إذا كان الموقع غير متاح، لا يظهر أي خطأ
\n\n

هام: لا تفرط في استخدام @! هذا يعقد عملية التصحيح. استخدمها فقط عندما تتوقع حقًا حدوث خطأ وتكون مستعدًا لمعالجته.

\n\n

4. ?? (عامل الدمج مع 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.

\n\n

5. ?-> (عامل الوصول الآمن / Nullsafe Operator)

\n\n

ميزة جديدة من PHP 8.0. تتيح الوصول "الآمن" إلى دوال وخصائص الكائن الذي قد يكون null.

\n\n
class 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\n

6. ... (عامل التفكيك / Spread Operator)

\n\n

النقاط الثلاث "تفك" المصفوفة أو الكائن القابل للتكرار. مفيد جدًا لتمرير الوسائط إلى دالة أو دمج المصفوفات.

\n\n
function 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

7. <=> (Sp

المدونات

توصيات الكتب