트랙
/
PHP
PHP
/
연습 문제
/
루시안의 맛있는 라자냐
루시안의 맛있는 라자냐

루시안의 맛있는 라자냐

학습 연습 문제

소개

기초

이러한 주제에 대해 더 자세히 알아보려면 개념 페이지를 확인해요.

일반적인 문법

PHP 여는 태그 <?php는 PHP 코드의 시작을 나타내요. 모든 문은 명령을 구분하기 위해 ;로 끝나야 해요.

<?php

$message = "Success!"; // Statement correctly ends with `;`
$message = "I fail." // PHP Parse error: syntax error, [...]

읽기 쉽도록, 모든 코드 예제에서는 PHP 여는 태그 <?php를 생략해요.

주석

한 줄 주석은 //로 시작해요.

// Single line comment

값과 변수

할당 = 연산자를 사용하면 변수에 값을 할당할 수 있어요. 변수 이름은 달러 $ 기호로 시작해야 하며, 이름 규칙을 따라야 해요.

$count = 1; // Assign value of 1

// Strings can be created by enclosing the characters
// within single `'` quotes or double `"` quotes.
$message = "Success!";

함수와 메서드

값과 변수는 함수에 전달할 수 있어요. 함수의 인자는 전달받은 값을 담는 새로운 변수가 돼요. 함수는 return 키워드를 사용해 어떤 값이든 반환할 수 있어요.

function window_height($height)
{
    return $height + 10;
}

window_height(100);
// => 110

클래스와 그 인스턴스 안에 있는 함수는 메서드라고 해요. 메서드를 호출할 때는 이름 앞에 인스턴스와 ->를 붙여요. 메서드는 현재 인스턴스를 가리키는 특별한 변수 $this에 접근할 수 있어요.

<?php

class Calculator {
    public function sub($x, $y)
    {
        return $this->add($x, -$y); // Calls the method add() of the current instance
    }

    public function add($x, $y)
    {
        return $x + $y;
    }
}

$calculator = new Calculator(); // Creates a new instance of Calculator class
$calculator->sub(3, 1); // Calls the method sub() of the instance stored in $calculator
// => 2

지침

이 연습 문제에서는 좋아하는 요리책에 나오는 근사한 라자냐를 만드는 데 도움이 되는 코드를 작성해 봐요.

라자냐를 조리하는 데 드는 시간과 관련된 다섯 개의 과제가 있어요.

1. 예상 오븐 조리 시간(분) 정의하기

Lasagna 클래스에 expectedCookTime 함수를 구현해요. 이 함수는 인자를 받지 않고, 라자냐를 오븐에 몇 분 동안 넣어 두어야 하는지 반환해요. 요리책에 따르면 예상 오븐 조리 시간은 40분이에요.

<?php
$timer = new Lasagna();
$timer->expectedCookTime()
// => 40

2. 남은 오븐 조리 시간(분) 계산하기

Lasagna 클래스에 remainingCookTime 함수를 구현해요. 이 함수는 라자냐가 지금까지 오븐에 있던 실제 시간(분)을 인자로 받고, 이전 과제에서 구한 예상 오븐 조리 시간을 기준으로 라자냐가 오븐에 몇 분 더 있어야 하는지 반환해요.

<?php
$timer = new Lasagna();
$timer->remainingCookTime(30)
// => 10

3. 준비 시간(분) 계산하기

Lasagna 클래스에 totalPreparationTime 함수를 구현해요. 이 함수는 라자냐에 넣은 층의 개수를 인자로 받고, 층 하나를 준비하는 데 2분이 걸린다고 가정했을 때 라자냐를 준비하는 데 몇 분이 걸렸는지 반환해요.

<?php
$timer = new Lasagna();
$timer->totalPreparationTime(3)
// => 6

4. 총 작업 시간(분) 계산하기

Lasagna 클래스에 totalElapsedTime 함수를 구현해요. 이 함수는 두 개의 인자를 받아요. 첫 번째 인자는 라자냐에 넣은 층의 개수이고, 두 번째 인자는 라자냐가 오븐에 있던 시간(분)이에요. 이 함수는 라자냐를 조리하는 데 총 몇 분을 들였는지 반환해야 해요. 이는 준비 시간(분)과 그 순간까지 라자냐가 오븐에 있던 시간(분)을 더한 값이에요.

<?php
$timer = new Lasagna();
$timer->totalElapsedTime(3, 20)
// => 26

5. 라자냐가 완성되었다는 알림 만들기

Lasagna 클래스에 alarm 함수를 구현해요. 이 함수는 인자를 받지 않고, 라자냐를 먹을 준비가 되었다는 메시지를 반환해요.

<?php
$timer = new Lasagna();
$timer->alarm()
// => "Ding!"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
PHP Exercism

루시안의 맛있는 라자냐 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 PHP 트랙을 개념 11개연습 문제 122개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.