[웹 서비스 개발] PhP Basics 2

김광일·2024년 11월 19일

웹 서비스 개발

목록 보기
36/45
post-thumbnail

일자 : 13주차 1차시 (1)

[1-1] GLOBAL SCOPE

  • 함수 외부에서 선언된 변수는 전역 범위(GLOBAL SCOPE)를 가지며, 함수 외부에서만 접근할 수 있다.
  • 함수 내부에서 사용하기 위해서는 변수명 앞에 '$'을 붙여서 사용해야 한다.
  • 하지만 전역 변수를 너무 많이 사용하는 것은 코드의 가독성과 유지보수성을 떨어뜨릴 수 있으니 주의하는 것이 좋다.

1) 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // $x 변수는 전역 범위(global scope)에 선언되었다.
    $x = 5; // global scope

    // myTest라는 함수를 정의
    function myTest()
    {
        // 함수 내부에서 $x를 사용하려고 하지만, $x는 함수 외부에서 선언된 전역 변수이므로 직접 접근할 수 없다.
        // PHP는 기본적으로 함수 내부에서 전역 변수를 사용할 수 없기 때문에 오류가 발생한다.
        echo "<p>Variable x inside function is: $x</p>"; // 오류 발생 지점
    }

    // myTest 함수 호출
    myTest();

    // 함수 외부에서 $x 변수는 정상적으로 접근 가능하다.
    echo "<p>Variable x outside function is: $x</p>";
    ?>

</body>

</html>
  • Variable x inside function is : ?
  • Variable x outisde function is : 5

[1-2] LOCAL SCOPE

  • 함수 내부에서 선언된 변수는 지역 범위(LOCAL SCOPE)를 가지며, 해당 함수 내부에서만 접근할 수 있다.

1) 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // myTest라는 함수를 정의
    function myTest()
    {
        // $x 변수는 함수 내부에서 선언되었으며, 이는 로컬 범위(local scope)를 가진다.
        $x = 5; // local scope
        // 함수 내부에서 $x 변수를 출력
        echo "<p>Variable x inside function is: $x</p>";
    }

    // myTest 함수를 호출하여 함수 내부의 $x 값을 출력
    myTest();

    // 함수 외부에서 $x를 사용하려고 하지만, $x는 함수 내부에서만 유효한 로컬 변수이므로 오류가 발생한다.
    echo "<p>Variable x outside function is: $x</p>"; // 오류 발생 지점
    ?>

</body>

</html>
  • Variable x inside function is : 5
  • Variable x outisde function is : ?

[2] PHP The global Keyword

1) 특징

  • global 키워드를 함수 내부에서 사용하면 함수 외부에 있는 전역 변수가 함수 내에서 매칭(참조) 되어서 사용될 수 있다.

2) 예시

<?php
// 전역 변수 $x와 $y를 선언
$x = 5;
$y = 10;

// myTest 함수 정의
function myTest() {
    // global 키워드를 사용하여 함수 내부에서 전역 변수 $x와 $y를 사용
    global $x, $y;
    
    // $y의 값을 $x와 $y의 합으로 갱신
    $y = $x + $y; // $y는 5 + 10 = 15로 변경된다
}

// myTest 함수를 실행
myTest(); // 함수 호출 후 $y는 15로 변경된다

// 변경된 $y 값을 출력
echo $y; // 출력: 15
?>

[3] $GLOBALS[index]

1) 특징

  • PHP에서 $GLOBALS 배열은 모든 전역 변수를 참조할 수 있는 슈퍼글로벌 배열이다.
  • 이 배열을 사용하면 함수 내에서도 전역 변수를 직접 수정하거나 참조할 수 있다.
  • global 키워드 대신 $GLOBALS 배열을 사용하면 함수 내에서 전역 변수를 더 명확하게 처리할 수 있다.

2) 예시

<?php
$x = 5; // 전역 변수 $x 선언
$y = 10; // 전역 변수 $y 선언

// myTest 함수 정의
function myTest() {
    // $GLOBALS 배열을 사용하여 전역 변수 $x와 $y에 접근
    // $GLOBALS['x']는 전역 변수 $x의 값이고, $GLOBALS['y']는 전역 변수 $y의 값이다.
    // $y = $x + $y;를 통해 $y 값을 갱신
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; // $y는 5 + 10 = 15로 변경된다.
}

// myTest 함수 호출
myTest();

// 갱신된 $y 값 출력
echo $y; // 출력: 15
?>

[4] static local variable

1) 특징

  • static 키워드는 변수가 함수 호출 간에 값을 유지하도록 한다.
  • 기본적으로 함수 내의 변수는 함수가 끝날 때마다 초기화되지만, static으로 선언된 변수는 함수가 끝나도 값을 유지한다.
  • 함수가 여러 번 호출되어도 변수의 값이 누적된다.

2) 예시

<?php
// myTest 함수 정의
function myTest() {
    // static 변수 $x 선언: 함수가 호출될 때마다 초기화되지 않고, 이전 호출에서 값을 유지
    static $x = 0;
    
    // $x 값을 출력
    echo $x;
    
    // $x 값을 1 증가시킴
    $x++;
}

// myTest 함수 호출
myTest(); // 첫 번째 호출: $x = 0, 출력은 0
myTest(); // 두 번째 호출: $x = 1, 출력은 1
myTest(); // 세 번째 호출: $x = 2, 출력은 2
?>

[5] echo statement

1) echo

  • echo는 PHP에서 텍스트나 HTML 콘텐츠를 화면에 출력하는 데 사용된다.
  • echo하나 이상의 값을 출력하며, 문자열, 변수, HTML 등을 출력할 수 있다.
  • 여러 값을 콤마로 구분하거나 .(점)으로 결합하여 출력할 수 있다.

2) 예시

<!DOCTYPE html>
<html>

<body>

    <?php
    // PHP echo 문을 사용하여 HTML 콘텐츠를 출력
    echo "<h2>PHP is Fun!</h2>"; // <h2> 태그 안에 'PHP is Fun!' 출력
    echo "Hello world!<br>"; // 'Hello world!' 출력 후 줄바꿈 <br> 태그 추가
    echo "I'm about to learn PHP!<br>"; // 'I'm about to learn PHP!' 출력 후 줄바꿈 <br> 태그 추가
    // echo 문에서 여러 개의 문자열을 콤마로 구분하여 출력
    echo "This ", "string ", "was ", "made ", "with multiple parameters."; // 여러 문자열 출력
    ?>

</body>

</html>

3) 다양한 사용법

echo는 PHP에서 텍스트나 HTML을 출력하는 함수이다. 간단히 정리하면 다음과 같다:

  1. 기본 사용법
echo "Hello, World!";
  • 문자열을 출력한다.
  1. 여러 값 출력
echo "Hello", " ", "World!";
  • 여러 값을 콤마로 구분하여 출력할 수 있다.
  1. 변수 출력
$name = "John";
echo "Hello, $name";  // "Hello, John"
  • 문자열 내에서 변수를 바로 사용할 수 있다.
  1. 문자열과 변수 결합
$age = 25;
echo "I am " . $age . " years old.";  // "I am 25 years old."
  • .(점) 연산자로 문자열과 변수를 연결할 수 있다.
  • ,(쉼표) 연산자로 문자열끼리 연결할 수 있다.
  1. HTML 출력
echo "<h1>Welcome</h1>";
  • HTML 태그를 출력할 수 있다.

[6] print

  • print 문은 괄호를 사용하거나 사용하지 않고 모두 사용할 수 있다.

1) 예시

<?php
print "<h2>PHP is Fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>

: 이 코드에서 print 문은 각각 문자열을 출력하는 역할을 한다. 괄호를 사용하지 않고도 print 문을 사용할 수 있으며, 문자열을 출력할 때 아무런 문제가 없다.

2) echo와 print의 차이

  • echo와 print는 둘 다 화면에 출력을 하지만, 약간의 차이가 있다.
    • echo는 여러 인자를 출력할 수 있다.
    • print는 하나의 인자만 출력할 수 있다.
  • echo는 반환값이 없지만, print는 항상 1을 반환한다.

[7] Data Types

  • String
  • Integer
  • Float
  • Boolean
  • Array
  • Object
  • NULL
  • Resource

[7-1] String

1) 사용법

  • 문자열은 큰따옴표(") 또는 작은따옴표(')로 감싸서 선언할 수 있다.
  • 큰따옴표로 감싼 문자열은 변수나 특수 문자를 해석하고, 작은따옴표로 감싼 문자열은 그대로 출력된다.

2) 예시

<?php
  $x = "Hello world!";  // 큰따옴표로 문자열 선언
  $y = 'Hello world!';  // 작은따옴표로 문자열 선언
  
  echo $x;  // $x 출력
  echo "<br>";  // 줄바꿈
  echo $y;  // $y 출력
?>

[7-2] Integer

1) 사용법

  • 정수는 소수점이 없는 숫자를 나타낸다.
  • 정수는 기본적으로 10진수로 입력되며, 앞에 0x를 붙이면 16진수, 앞에 0을 붙이면 8진수로 간주된다.
  • 정수를 출력할 때는 echo나 var_dump() 함수를 사용할 수 있다.

2) 예시

<!DOCTYPE html>
<html>
<body>
<?php
  $x = 5985;  // 정수 선언
  var_dump($x);  // 변수 타입과 값 출력
?>
</body>
</html>

[7-3] Float

1) 사용법

  • float는 소수점 숫자를 표현하는 데이터 타입이다.
  • 실수 값을 저장하고 연산할 때 사용된다.

2) 예시

<?php
$x = 10.365;  // float 타입 변수 $x에 실수 값 할당
var_dump($x);  // 변수 $x의 타입과 값을 출력
// 결과: float(10.365)
?>

[7-4] Array

1) 사용법

  • array는 여러 개의 값을 하나의 변수에 저장할 수 있는 데이터 구조이다.
  • 배열의 각 항목은 인덱스를 통해 접근할 수 있다.

2) 예시

<?php
$cars = array("Volvo", "BMW", "Toyota");  // 배열 $cars에 자동차 이름 저장
var_dump($cars);  // 배열 $cars의 타입과 값을 출력
// 결과: array(3) {
//   [0] => string(5) "Volvo"
//   [1] => string(3) "BMW"
//   [2] => string(6) "Toyota"
// }
?> 

3) 변화점

  • 전통적인 배열 선언: array()를 사용하여 배열을 선언한다.
  • 단축 배열 선언: PHP 5.4 이후, []를 사용하여 배열을 선언할 수 있다.

[7-5] Object

  • 객체는 데이터를 저장하고 해당 데이터를 처리하는 방법을 포함하는 데이터 타입이다.

1) 사용법

  • PHP에서 객체를 사용하려면 클래스를 정의해야 하며, 그 클래스에서 객체를 생성할 수 있다.
  • 클래스는 속성(데이터)과 메서드(데이터를 처리하는 방법)를 포함한다.
  • 객체는 클래스의 인스턴스이다.

2) 예시

<?php
// Car라는 클래스를 정의
class Car {
    // 생성자 함수에서 객체 속성을 설정
    function Car() {
        $this->model = "VW";  // 객체의 model 속성 설정
    }
}

// 객체를 생성
$herbie = new Car();
// 객체의 속성에 접근하여 값 출력
echo $herbie->model;  // 결과: VW
?>

이 예시에서는 Car라는 클래스를 정의하고, 이 클래스에는 model이라는 속성이 있다. 객체 $herbieCar 클래스를 기반으로 생성되며, 그 속성 model의 값을 출력한다.

[7-6] PHP NULL Value

  • NULL은 특별한 데이터 타입으로, 오직 하나의 값인 NULL만 가질 수 있다.
  • NULL 데이터 타입의 변수는 값이 할당되지 않은 상태인 변수를 의미한다.
  • 팁: 변수가 값 없이 생성되면 자동으로 NULL 값이 할당된다.
  • 변수의 값을 NULL로 설정하여 빈 값으로 만들 수도 있다.

1) 사용법

  • NULL 값은 변수에 값이 없거나 비어 있다는 것을 나타낸다.
  • 변수에 NULL을 할당하거나, 값이 없을 때 NULL을 사용하여 해당 변수를 비울 수 있다.

2) 예시

<?php
$x = NULL;  // 변수 $x에 NULL 값 할당
var_dump($x);  // 결과: NULL

$y = 10;  // 변수 $y에 숫자 10 할당
$y = NULL;  // 변수 $y를 NULL로 설정하여 빈 값으로 만듦
var_dump($y);  // 결과: NULL

$z;  // 변수 $z는 값이 할당되지 않아 자동으로 NULL 값이 할당됨
var_dump($z);  // 결과: NULL
?>

[8] PHP는 느슨하게 타입이 지정된 언어

  • PHP는 느슨하게 타입이 지정된 언어로, 변수에 할당된 값의 데이터 타입을 명시적으로 지정하지 않아도 PHP가 자동으로 타입을 변환해준다.
  • 하지만 strict_types를 활성화하면 타입 변환이 엄격히 제한된다.

1) 예시 1

<?php
function addNumbers(int $a, int $b) {
    return $a + $b;
}

echo addNumbers(5, "5 days");
// strict 모드가 활성화되지 않았으므로 "5 days"는 자동으로
// int(5)로 변환되고, 결과는 10이 반환됨
?>

: 이 예시에서는 strict_types가 비활성화되어 있기 때문에, "5 days"와 같은 문자열이 자동으로 정수 값 5로 변환되어 연산이 수행된다. 결과적으로 10이 출력된다.

2) 예시 2

<?php declare(strict_types=1); // strict 모드 활성화
function addNumbers(int $a, int $b) {
    return $a + $b;
}

echo addNumbers(5, "5 days");
// strict 모드가 활성화되어 "5 days"는 정수가 아니므로
// 오류가 발생한다.
?>

: 이 예시에서는 strict_types가 활성화되어 있기 때문에, "5 days"는 정수 타입이 아니므로 오류가 발생한다. 이 경우 PHP는 타입 변환을 허용하지 않고 오류를 발생시킨다.

[9] Default Argument Value

1) 설명

  • PHP 함수에서 매개변수에 기본값을 설정할 수 있다.
  • 기본값이 설정된 매개변수는 함수 호출 시 해당 값을 제공하지 않으면 기본값을 사용한다.
  • 이를 통해 함수가 호출될 때 항상 특정 값이 존재하도록 할 수 있다.
  • 기본값은 함수 선언 시 매개변수에 할당된다.

2) 예시

<?php declare(strict_types=1); // strict 모드 활성화
function setHeight(int $minheight = 50) {
    echo "The height is : $minheight <br>";
}

setHeight(350);   // 350을 전달하므로 350이 출력됨
setHeight();      // 값을 전달하지 않으면 기본값 50이 사용되어 50이 출력됨
setHeight(135);   // 135를 전달하므로 135가 출력됨
setHeight(80);    // 80을 전달하므로 80이 출력됨
?>

: 이 예시에서 setHeight() 함수는 기본값 50을 가지는 minheight 매개변수를 갖는다. 함수를 호출할 때 minheight에 값을 전달하지 않으면 기본값인 50이 사용된다. 전달된 값이 있으면 그 값이 사용된다.

[10-1] PHP Functions - Returning values

1) 설명

  • PHP 함수에서 return 키워드를 사용하여 값을 반환할 수 있다.
  • 함수가 값을 반환하면 해당 값을 호출한 지점으로 전달한다.
  • 반환된 값은 다른 변수에 저장하거나, 바로 출력할 수 있다.
  • 함수가 반환하는 값은 여러 종류일 수 있으며, 그 타입도 함수 정의에서 설정한 대로 지정할 수 있다.

2) 예시

<?php declare(strict_types=1); // strict 모드 활성화
function sum(int $x, int $y) {
    $z = $x + $y;  // 두 숫자의 합을 구하여 $z에 저장
    return $z;  // 합산된 값을 반환
}

echo "5 + 10 = " . sum(5, 10) . "<br>";  // 5와 10을 더한 값을 출력
echo "7 + 13 = " . sum(7, 13) . "<br>";  // 7과 13을 더한 값을 출력
echo "2 + 4 = " . sum(2, 4);  // 2와 4를 더한 값을 출력
?>

: 이 예시에서 sum() 함수는 두 정수 값을 받아 그 합을 반환한다. 각 호출에서 반환된 값을 바로 출력하여 두 수의 합을 출력한다. 반환된 값은 echo를 통해 출력된다.

[10-2] PHP Return Type Declarations

1) 설명

  • PHP 7부터는 함수의 반환값의 타입을 선언할 수 있는 기능이 추가되었다.
  • 반환 타입을 명시적으로 지정하면, 함수가 반환하는 값이 해당 타입과 일치하지 않을 경우 오류를 발생시킨다.
  • 이를 통해 함수의 반환값을 예측 가능하게 만들 수 있으며, 코드의 안정성을 높일 수 있다.
  • 반환 타입 선언은 함수 정의에서 : 뒤에 타입을 명시하여 사용한다.

2) 예시

<?php declare(strict_types=1); // strict 모드 활성화
function addNumbers(float $a, float $b) : float {
    return $a + $b;  // 두 실수의 합을 반환
}

echo addNumbers(1.2, 5.2);  // 결과: 6.4
?>

: 이 예시에서는 addNumbers() 함수가 두 실수(float)를 받아 그 합을 반환하고, 반환 타입도 float로 선언되어 있다. 함수는 실수 값을 반환하며, addNumbers(1.2, 5.2) 호출 결과는 6.4로 출력된다. 반환 타입을 명시함으로써, 함수가 float 외의 값을 반환하면 오류가 발생한다.

[11] Specify a Different Return Type

1) 설명

  • PHP에서는 함수의 반환값을 원하는 타입으로 변환할 수 있다.
  • 반환 타입을 다른 타입으로 지정하려면 함수에서 계산된 값을 강제로 캐스팅(casting)하여 반환할 수 있다.
  • 예를 들어, 실수(float)를 정수(int)로 변환하려면 (int)를 사용하여 반환 타입을 변환할 수 있다.
  • 이 방식은 결과 값의 타입을 명시적으로 변경할 때 유용하다.

2) 예시

<?php declare(strict_types=1); // strict 모드 활성화
function addNumbers(float $a, float $b) : int {
    return (int)($a + $b);  // 두 실수의 합을 정수로 강제 변환하여 반환
}

echo addNumbers(1.2, 5.2);  // 결과: 6
?>

: 이 예시에서는 addNumbers() 함수가 float 타입의 두 숫자를 받아 그 합을 계산한 후, 그 결과를 (int)를 사용해 정수로 강제 변환한 후 반환한다. 예를 들어, 1.2 + 5.2 = 6.4이지만, 반환 값은 6으로 출력된다. 반환 타입을 int로 지정하였기 때문에 실수 값이 정수로 변환되어 반환된다.


Summary

1. Global Scope (전역 범위)

  • 함수 외부에서 선언된 변수는 전역 범위를 가지며, 함수 외부에서만 접근 가능하다. 함수 내에서 접근하려면 $GLOBALS 배열 또는 global 키워드를 사용해야 한다.

2. Local Scope (지역 범위)

  • 함수 내부에서 선언된 변수는 지역 범위를 가지며, 해당 함수 내에서만 접근할 수 있다.

3. Global Keyword

  • global 키워드를 사용하면 함수 내부에서 전역 변수를 참조할 수 있다.

4. $GLOBALS Array

  • $GLOBALS 배열을 사용하여 함수 내에서 전역 변수를 직접 참조하거나 수정할 수 있다.

5. Static Local Variable

  • static 키워드를 사용하면 함수 내 변수 값이 호출 간에 유지된다.

6. echo & print

  • echoprint는 화면에 출력을 한다. echo는 여러 값을 출력할 수 있고, print는 하나만 출력한다.

7. Data Types

  • PHP는 다양한 데이터 타입을 지원: String, Integer, Float, Boolean, Array, Object, NULL, Resource.

8. NULL

  • NULL 값은 변수에 값이 없음을 나타내며, 자동으로 NULL 값이 할당될 수 있다.

9. Type Conversion

  • PHP는 느슨한 타입을 지원하며, 타입 변환이 자동으로 이루어진다. strict_types를 활성화하면 타입 변환이 엄격히 제한된다.

10. Default Argument Value

  • 함수 매개변수에 기본값을 설정할 수 있다. 기본값이 제공되지 않으면 기본값이 사용된다.

11. Return Value

  • PHP 함수는 return을 통해 값을 반환하며, 반환된 값은 다른 변수에 저장하거나 출력할 수 있다. 반환값의 타입을 명시할 수도 있다.

profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글