일자 : 13주차 1차시 (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>
<!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>
<?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
?>
<?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
?>
<?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
?>
echo는 하나 이상의 값을 출력하며, 문자열, 변수, HTML 등을 출력할 수 있다..(점)으로 결합하여 출력할 수 있다.<!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>
echo는 PHP에서 텍스트나 HTML을 출력하는 함수이다. 간단히 정리하면 다음과 같다:
echo "Hello, World!";
echo "Hello", " ", "World!";
$name = "John";
echo "Hello, $name"; // "Hello, John"
$age = 25;
echo "I am " . $age . " years old."; // "I am 25 years old."
.(점) 연산자로 문자열과 변수를 연결할 수 있다.,(쉼표) 연산자로 문자열끼리 연결할 수 있다.echo "<h1>Welcome</h1>";
print 문은 괄호를 사용하거나 사용하지 않고 모두 사용할 수 있다.<?php
print "<h2>PHP is Fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>
: 이 코드에서 print 문은 각각 문자열을 출력하는 역할을 한다. 괄호를 사용하지 않고도 print 문을 사용할 수 있으며, 문자열을 출력할 때 아무런 문제가 없다.
") 또는 작은따옴표(')로 감싸서 선언할 수 있다.<?php
$x = "Hello world!"; // 큰따옴표로 문자열 선언
$y = 'Hello world!'; // 작은따옴표로 문자열 선언
echo $x; // $x 출력
echo "<br>"; // 줄바꿈
echo $y; // $y 출력
?>
<!DOCTYPE html>
<html>
<body>
<?php
$x = 5985; // 정수 선언
var_dump($x); // 변수 타입과 값 출력
?>
</body>
</html>
float는 소수점 숫자를 표현하는 데이터 타입이다. <?php
$x = 10.365; // float 타입 변수 $x에 실수 값 할당
var_dump($x); // 변수 $x의 타입과 값을 출력
// 결과: float(10.365)
?>
array는 여러 개의 값을 하나의 변수에 저장할 수 있는 데이터 구조이다. <?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"
// }
?>
<?php
// Car라는 클래스를 정의
class Car {
// 생성자 함수에서 객체 속성을 설정
function Car() {
$this->model = "VW"; // 객체의 model 속성 설정
}
}
// 객체를 생성
$herbie = new Car();
// 객체의 속성에 접근하여 값 출력
echo $herbie->model; // 결과: VW
?>
이 예시에서는 Car라는 클래스를 정의하고, 이 클래스에는 model이라는 속성이 있다. 객체 $herbie는 Car 클래스를 기반으로 생성되며, 그 속성 model의 값을 출력한다.
NULL은 특별한 데이터 타입으로, 오직 하나의 값인 NULL만 가질 수 있다.NULL 데이터 타입의 변수는 값이 할당되지 않은 상태인 변수를 의미한다.NULL 값이 할당된다.NULL로 설정하여 빈 값으로 만들 수도 있다.NULL 값은 변수에 값이 없거나 비어 있다는 것을 나타낸다. NULL을 할당하거나, 값이 없을 때 NULL을 사용하여 해당 변수를 비울 수 있다.<?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
?>
strict_types를 활성화하면 타입 변환이 엄격히 제한된다.<?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이 출력된다.
<?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는 타입 변환을 허용하지 않고 오류를 발생시킨다.
<?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이 사용된다. 전달된 값이 있으면 그 값이 사용된다.
PHP 함수에서 return 키워드를 사용하여 값을 반환할 수 있다.<?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를 통해 출력된다.
반환 타입 선언은 함수 정의에서 : 뒤에 타입을 명시하여 사용한다.<?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 외의 값을 반환하면 오류가 발생한다.
float)를 정수(int)로 변환하려면 (int)를 사용하여 반환 타입을 변환할 수 있다. <?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로 지정하였기 때문에 실수 값이 정수로 변환되어 반환된다.
1. Global Scope (전역 범위)
$GLOBALS 배열 또는 global 키워드를 사용해야 한다.2. Local Scope (지역 범위)
3. Global Keyword
global 키워드를 사용하면 함수 내부에서 전역 변수를 참조할 수 있다.4. $GLOBALS Array
$GLOBALS 배열을 사용하여 함수 내에서 전역 변수를 직접 참조하거나 수정할 수 있다.5. Static Local Variable
static 키워드를 사용하면 함수 내 변수 값이 호출 간에 유지된다.6. echo & print
echo와 print는 화면에 출력을 한다. echo는 여러 값을 출력할 수 있고, print는 하나만 출력한다.7. Data Types
8. NULL
NULL 값은 변수에 값이 없음을 나타내며, 자동으로 NULL 값이 할당될 수 있다.9. Type Conversion
strict_types를 활성화하면 타입 변환이 엄격히 제한된다.10. Default Argument Value
11. Return Value
return을 통해 값을 반환하며, 반환된 값은 다른 변수에 저장하거나 출력할 수 있다. 반환값의 타입을 명시할 수도 있다.