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

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

جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 11 من 91.

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

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

<?php
use Blog\User;

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

عندما تحتاج إلى فئات (classes) من مساحات أسماء (namespaces) مختلفة بنفس الاسم، يمكنك إنشاء اسم مستعار (alias) باستخدام الكلمة المفتاحية 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

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

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

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

نقطة رئيسية: يجب أن يظهر بيان use بعد تصريح namespace (إن وجد) وقبل أي كود آخر. فهو يجعل الكود الخاص بك أكثر نظافة وأسهل في القراءة من خلال التخلص من مسارات مساحة الأسماء المتكررة.

challenge icon

التحدي

سهل

لنقم بتنظيم تطبيق مراسلة باستخدام الكلمة المفتاحية use لاستيراد الفئات بشكل نظيف وتجنب كتابة مسارات مساحات الأسماء الكاملة في كل مكان.

ستقوم بإنشاء ثلاثة ملفات تعمل معاً:

  • Messaging/Email.php — قم بتعريف فئة Email في مساحة الأسماء Messaging. يجب أن تحتوي على خاصية public $address، ومنشئ (constructor) يقبل العنوان ويقوم بتعيينه، وتابع send() يعيد "Sending email to [address]".
  • Messaging/SMS.php — قم بتعريف فئة SMS في مساحة الأسماء Messaging. يجب أن تحتوي على خاصية public $phone، ومنشئ (constructor) يقبل رقم الهاتف ويقوم بتعيينه، وتابع send() يعيد "Sending SMS to [phone]".
  • main.php — قم بتضمين كلا ملفي الفئات، ثم استخدم الكلمة المفتاحية use لاستيراد كلتا الفئتين. أنشئ كائن Email بالعنوان "alice@example.com" وكائن SMS بالهاتف "555-1234". اطبع نتيجة استدعاء send() لكل كائن (كل منهما في سطر منفصل).

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

ورقة مرجعية

الكلمة المفتاحية use تستورد فئة (class) في الجزء العلوي من ملفك، مما يسمح لك بالإشارة إليها باسمها المختصر بدلاً من مسار مساحة الاسم (namespace) الكامل:

<?php
use Blog\User;

$user = new User("Alice");

عندما تشترك فئات من مساحات أسماء مختلفة في نفس الاسم، قم بإنشاء اسم مستعار (alias) باستخدام الكلمة المفتاحية as:

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

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

استورد فئات متعددة من نفس مساحة الاسم باستخدام عمليات الاستيراد المجمعة:

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

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

يجب أن يظهر بيان use بعد إعلان namespace (إن وجد) وقبل أي كود آخر.

جرّب بنفسك

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

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


// TODO: قم بإنشاء كائن Email بالعنوان "alice@example.com"


// TODO: قم بإنشاء كائن SMS بالرقم "555-1234"


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

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

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

جميع دروس Object Oriented Programming