클래스는 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 객체 인스턴스를 받아 자신의 속성을 갱신하는 resize 함수가 필요해요.
<?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 객체 인스턴스를 받아 자신의 속성을 갱신하는 move 함수가 필요해요.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Exercism에 가입하고 PHP 트랙을 개념 11개연습 문제 122개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.