الأصناف وحدة من وحدات تنظيم الكود في PHP.
يمكن تجميع الكود الذي يمثّل سلوك عنصر ما أو سلوك عملية ما في صنف واحد.
وبحكم الاصطلاح، تُسمّى الدوال التي تُسنَد إلى صنف methods.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
نُنشئ نسخة من الصنف بالكلمة المفتاحية new، وهذا يخصّص ذاكرة لنسخة الصنف ويستدعي طريقة البناء الخاصة بالصنف.
ويمكن إسناد الأصناف المُنشأة إلى متغير.
ولاستدعاء طُرق نسخة صنف ما، يمكننا استخدام عامل الوصول ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
يمكن للصنف المُنشأ أن يشير إلى نسخته الخاصة باستخدام المتغير الخاص $this.
وقد تمتلك الأصناف أيضًا خصائص، وهي تعمل بمثابة متغيرات مرتبطة بنسخة كائن الصنف.
ويمكن الإشارة إلى هذه الخصائص داخليًا أو خارجيًا.
<?php
class Car
{
public $color;
function __construct($color)
{
$this->color = $color;
}
function getColor()
{
return $this->color;
}
}
$a_car = new Car("red");
$a_car->color; // => "red" by accessing the property
$a_car->getColor(); // => "red" by invoking the instance method
في هذا التمرين، ستُحاكي نظام حاسوب قائمًا على النوافذ. ستُنشئ بعض النوافذ التي يمكن نقلها وتغيير حجمها. توضّح الصورة التالية القيم التي ستعمل عليها أدناه.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
باستخدام هيكل الصنف المقدَّم، عرّف الخصائص الخاصة بقيم y وx وheight وwidth.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
عرّف دالة بناء لـ ProgramWindow.
يجب ألا تأخذ أي وسائط، لكن أثناء تنفيذ دالة البناء عيّن القيم الافتراضية لخصائصها.
يجب أن تعيّن القيم الأولية لـ y وx إلى 0.
يجب أن تعيّن height وwidth الأوليين إلى حجم شاشة 600x800.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
عرّف صنفًا جديدًا في Size.php لصنف Size.
يجب أن تأخذ وسائط لدالة البناء لتعيين خاصيتي height وwidth.
بالإضافة إلى ذلك، يحتاج ProgramWindow إلى دالة لتغيير الحجم، تستقبل نسخة كائن Size وتحدّث خصائصه الخاصة.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
عرّف صنفًا جديدًا في Position.php لصنف Position.
يجب أن تأخذ وسائط لدالة البناء لتعيين خاصيتي y وx.
بالإضافة إلى ذلك، يحتاج ProgramWindow إلى دالة للنقل، تستقبل نسخة كائن Position وتحدّث خصائصه الخاصة.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
سجّل في Exercism لتتعلّم وتتقن PHP عبر 11 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.