Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الكلمة المفتاحية use

جزء من قسم البرمجة كائنية التوجه في رحلة PHP على Coddy. الدرس 11 من 91.

قد تصبح كتابة مسار namespace الكامل في كل مرة تستخدم فيها class أمرًا مملًا. تتيح لك الكلمة المفتاحية use استيراد class في أعلى ملفك، بحيث يمكنك الإشارة إليها باستخدام اسمها المختصر.

بدلًا من كتابة \Blog\User مرارًا، يمكنك استيرادها مرة واحدة:

<?php
use Blog\User;

$user = new User("Alice");
echo $user->name;

عندما تحتاج إلى classes من namespace مختلفة تحمل الاسم نفسه، يمكنك إنشاء اسم مستعار باستخدام keyword as:

<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;

$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");

echo $blogger->name . "\n";
echo $customer->email . "\n";

المخرجات:

Alice
alice@example.com

يمكنك أيضًا استيراد فئات متعددة من مساحة الاسم نفسها باستخدام عمليات الاستيراد المجمّعة:

<?php
use Blog\{User, Post, Comment};

$user = new User("Alice");
$post = new Post("Hello World");

النقطة الأساسية: يجب أن تظهر عبارة use بعد تعريف namespace (إن وُجد) وقبل أي تعليمات برمجية أخرى. فهي تجعل كودك أكثر تنظيمًا وأسهل في القراءة، وذلك بإزالة مسارات namespace المتكررة.

challenge icon

التحدي

سهل

لننظّم تطبيقًا للمراسلة باستخدام الكلمة المفتاحية use لاستيراد classes بطريقة واضحة وتجنّب كتابة مسارات namespace الكاملة في كل مكان.

ستنشئ ثلاثة files تعمل معًا:

  • Messaging/Email.php: استخدم Define class باسم Email في namespace باسم Messaging. يجب أن تحتوي على property باسم public $address، وconstructor يقبل address ويستخدمه في sets، وmethod باسم send() يعيد "Sending email to [address]".
  • Messaging/SMS.php: استخدم Define class باسم SMS في namespace باسم Messaging. يجب أن تحتوي على property باسم public $phone، وconstructor يقبل phone number ويستخدمه في sets، وmethod باسم send() يعيد "Sending SMS to [phone]".
  • main.php: استخدم Include لكلا ملفَي classes، ثم استخدم الكلمة المفتاحية use لاستيراد كلا classين. أنشئ object من Email بعنوان address هو "alice@example.com" وobject من SMS برقم phone هو "555-1234". استخدم Print result استدعاء send() على كل object، بحيث يظهر each منهما في line منفصلة.

في main.php، بدلًا من كتابة new \Messaging\Email(...)، ستستورد classes في الأعلى باستخدام عبارات use، حتى تتمكن من كتابة new Email(...) وnew SMS(...) ببساطة.

جرّب بنفسك

<?php
// تضمين ملفات الفئات
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: استخدم الكلمة المفتاحية 'use' لاستيراد كلا الفئتين من مساحة الأسماء Messaging
// هذا يسمح لك بكتابة 'new Email(...)' بدلاً من 'new \Messaging\Email(...)'


// TODO: Create an Email object with address "alice@example.com"


// TODO: أنشئ كائن SMS برقم الهاتف "555-1234"


// TODO: اطبع نتيجة استدعاء send() على كل كائن (كل واحد في سطره الخاص)

?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم PHP عبر الإنترنت