کلاس در 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