المسارات
/
PHP
PHP
/
التمارين
/
مكتب المدينة
مكتب المدينة

مكتب المدينة

تمرين تعلّمي

مقدمة

الإعلان عن الأنواع

توفّر الإعلانات عن الأنواع في PHP تحققات على الأنواع وقت التشغيل لوسائط الدوال وقيم الإرجاع وخصائص الأصناف. وفي الدوال، يمكن إضافة نوع إرجاع void للدلالة على أن الدالة لا تُرجع أي قيمة. كما تعمل الأنواع المعلنة بمثابة تحققات وقت التشغيل من أن الدوال تُرجع استجابة بنوع سليم.

<?php

class Driver
{
    private int $serial_number;

    public function setSerialNumber(int $number): void
    {
        $this->serial_number = $number;
    }

    public function getSerialNumber(): int
    {
        return $this->serial_number; 
    }
}

$driver = new Driver();
$driver->setSerialNumber("Version 1b"); // This will throw a TypeError

اتحاد الأنواع

إذا كان وسيط دالة أو قيمة إرجاع أو خاصية صنف يمكن أن يكون أكثر من نوع واحد، فيمكن الإعلان عن اتحاد أنواع.

<?php

class IdentityCard
{
    private int|null $id = null;

    public function assign(int|float $id): void
    {
        $this->id = intval($id);
    }
}

$card = new IdentityCard();
$card->assign(5.0);

الأنواع المختلطة

عند العمل على الكود، قد لا نتمكن من تحديد نوع. بدءًا من PHP 8.0، يُتاح نوع بمثابة مخرج طوارئ يُسمى mixed. النوع mixed يكافئ اتحاد أنواع من object|resource|array|string|float|int|bool|null.

التعليمات

لقد عملت في مكتب المدينة لبعض الوقت، وطوّرت مجموعة من الأدوات التي تسرّع عملك اليومي، مثل تعبئة النماذج.

والآن، ينضم إليك زميل جديد، وقد أدركت أن أدواتك قد لا تكون واضحة بذاتها. هناك الكثير من العادات الغريبة في مكتبك، مثل تعبئة النماذج دائمًا بأحرف كبيرة وتجنّب ترك الحقول فارغة.

وكخطوة أولى، تقرر إضافة إعلانات الأنواع في PHP ليكون من الأسهل على زميلك الجديد أن يبدأ العمل فورًا ويستخدم أدواتك.

1. أعلن الأنواع لصنف Address

أضف إعلانات أنواع الخصائص إلى كل خاصية معلَنة من خصائص الصنف Address. وينبغي إعلان كل خاصية من خصائص الصنف على أنها سلسلة نصية.

2. أعلن الأنواع لتعبئة النموذج بقيم فارغة

أضف إعلان نوع للمعامل وإعلان نوع للإرجاع إلى الطريقة blanks في الصنف Form. ينبغي أن تستقبل الطريقة طولًا من نوع عدد صحيح، وأن تُرجع تمثيلًا نصيًا للسطر الفارغ.

3. أعلن النوع عند تقسيم قيمة إلى أحرف منفصلة

أضف إعلان نوع للمعامل وإعلان نوع للإرجاع إلى الطريقة letters في الصنف Form. ينبغي أن تستقبل الطريقة سلسلة نصية تمثّل كلمات، وأن تُرجع مصفوفة من الأحرف.

4. أعلن النوع عند التحقق مما إذا كانت قيمة ستتّسع في نموذج

أضف إعلانات أنواع للمعاملات وإعلان نوع للإرجاع إلى الطريقة checkLength في الصنف Form. ينبغي أن تستقبل الطريقة كلمة من نوع سلسلة نصية، وطولًا أقصى من نوع عدد صحيح، وأن تُرجع قيمة منطقية.

5. أعلن النوع عند تنسيق عنوان في النموذج

أضف إعلان نوع للمعامل، بالاستعانة بصنف Address الذي حدّثته سابقًا، وإعلان نوع للإرجاع إلى الطريقة formatAddress في الصنف Form. ينبغي أن تستقبل الطريقة معاملًا من نوع Address، وأن تُرجع سلسلة نصية منسّقة.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
PHP Exercism

مستعد لبدء مكتب المدينة؟

سجّل في Exercism لتتعلّم وتتقن PHP عبر 11 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.