- global
일반 javascript와는 다르게 php에서는 전역변수를 사용하기 위해 global 라는 것을 변수 앞에 붙여줘야 제대로 전역 변수를 사용할 수 있음
- global $변수;
<?php
$num = 10;
function f() {
echo "전역변수에서 가져온 num의 값은 {$num} <br>";
global $num;
echo "함수 내부에서 호출한 전역변수 num의 값은 {$num}<br>";
}
f();
echo "함수 밖에서 호출한 전역변수 num의 값은 {$num}";
?>
- 슈퍼 글로벌(superglobal)
- PHP는 미리 정의된 전역 변수인 슈퍼 글로벌(superglobal)을 제공합니다.
- 이러한 슈퍼 글로벌은 특별한 선언 없이 스크립트 내의 어디에서라도 바로 사용할 수 있습니다.
1. $GLOBALS
2. $_SERVER
3. $_GET
4. $_POST
5. $_FILES
6. $_COOKIE
7. $_SESSION
8. $_REQUEST
9. $_ENV
- PHP는 모든 전역 변수를 $GLOBALS 배열에 저장합니다.
-이 배열에 인덱스로 변수의 이름을 사용하면, 해당 전역 변수의 값에 접근할 수 있습니다.
-이 배열은 함수 내부에서도 접근할 수 있으며, 이 배열을 통해 바로 전역 변수의 값을 변경할 수도 있습니다.
- < . >은 PHP에서 문자열 연결 연산자입니다. 두 문자열을 이어붙이는 역할을 합니다.
<?php
$name = "짱구";
function active() {
echo "전역변수 선언x name값은 {$name}<br>";
echo "전역변수로 name값 가져오기 {$GLOBALS['name']}<br>";
}
active();
?>
결과값
- $_SERVER
- $_SERVER 는 헤더, 경로, 그리고 스크립트 위치에 대한 정보를 담고 있는 PHP 수퍼전역변수
- $_SERVER['PHP_SELF']: 현재 실행 중인 스크립트 파일의 경로와 파일명. http://example.com/myscript.php 라면, $_SERVER['PHP_SELF']는 /myscript.php를 반환합니다.
- $_SERVER['SERVER_NAME']: 현재 호스팅된 서버의 이름. www.example.com 또는 IP 주소가 될 수 있습니다.
- $_SERVER['HTTP_HOST']: 현재 요청한 호스트 이름. 이 값은 HTTP 요청 헤더에서 호스트 부분을 가져옵니다.
- $_SERVER['HTTP_REFERER']: 현재 페이지로 유입된 이전 페이지의 URL을 나타냅니다. 이 값은 HTTP Referer 헤더에서 가져옵니다.
- $_SERVER['HTTP_USER_AGENT']: 현재 요청을 보낸 클라이언트의 사용자 에이전트 정보. 이 정보는 브라우저와 운영체제 등에 관한 정보를 포함합니다.
- $_SERVER['SCRIPT_NAME']: 현재 스크립트 파일의 경로와 파일명. $_SERVER['PHP_SELF']와 유사하지만 서버 환경에 따라 차이가 있을 수 있습니다.
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
- $_GET
- $_GET은 URL을 통해 전송된 매개변수를 받아올 때 사용됩니다. 일반적으로 링크나 폼 전송 등에 사용됩니다.
<form action="phpinfo.php" method="get">
Name: <input type="text" name="name"><br>
Age: <input type="text" name="age"><br>
<input type="submit" value="Submit">
</form>
<?php
$name = $_GET['name'];
$age = $_GET['age'];
echo "Hello, $name! You are $age years old.";
?>
- $_POST
- $_POST는 HTTP POST 요청을 통해 전송된 변수를 받아올 때 사용됩니다. 보안적으로 더 안전한 방법입니다.
<form action="phpinfo.php" method="post">
Name: <input type="text" name="name"><br>
Age: <input type="text" name="age"><br>
<input type="submit" value="Submit">
</form>
<?php
$name = $_POST['name'];
$age = $_POST['age'];
echo "Hello, $name! You are $age years old.";
?>
- $_FILES
-$_FILES는 파일 업로드 시에 사용됩니다. 주로 파일 업로드 폼과 함께 사용
- $target_dir = "uploads/";
- 이 코드는 업로드된 파일을 저장할 디렉터리를 지정합니다. 여기서는 "uploads/"로 설정되어 있습니다. 디렉터리의 상대 경로를 사용했습니다.
- $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
- 이 코드는 업로드된 파일의 최종 저장 경로와 파일명을 지정합니다. $_FILES["fileToUpload"]["name"]은 업로드된 파일의 원래 이름입니다. basename() 함수를 사용하여 파일명에서 디렉터리 경로를 제거합니다. 그리고 이를 $target_dir과 합쳐 최종 경로를 만듭니다.
- $uploadOk = 1;
- 이 변수는 파일 업로드가 가능한지를 나타내는 플래그입니다. 일단 1로 설정되어 있습니다.
- if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
- 이 부분은 실제로 파일을 업로드하는 부분입니다. move_uploaded_file() 함수를 사용하여 임시 파일을 목적지로 옮깁니다.
- 첫 번째 매개변수 $_FILES["fileToUpload"]["tmp_name"]은 업로드된 파일의 임시 경로입니다.
- 두 번째 매개변수 $target_file은 파일이 최종적으로 저장될 경로와 파일명입니다.
- echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
- 파일이 성공적으로 업로드되면 이 부분이 실행됩니다. 업로드된 파일의 이름을 포함한 메시지가 출력됩니다. htmlspecialchars() 함수는 HTML 특수 문자를 이스케이프하여 보안을 강화합니다.
- } else {
- 파일 업로드에 실패하면 이 부분이 실행됩니다.
- echo "Sorry, there was an error uploading your file.";
- 파일 업로드에 실패한 경우 이 메시지가 출력됩니다.
<form action="phpinfo.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
?>
- $_COOKIE는 클라이언트의 쿠키 정보를 받아올 때 사용됩니다.
<?php
setcookie("user", "John Doe", time() + 3600, "/");
if(isset($_COOKIE["user"])) {
echo "Welcome " . $_COOKIE["user"] . "!";
} else {
echo "Cookie not set!";
}
?>
- $_SESSION
-$_SESSION은 세션 변수에 접근할 때 사용됩니다. 세션은 서버 측에서 데이터를 저장하는 방법입니다.
<?php
session_start();
$_SESSION["username"] = "JohnDoe";
$_SESSION["email"] = "john@example.com";
echo "Welcome, " . $_SESSION["username"];
?>
- $_REQUEST
-HTTP 요청(GET, POST, 그리고 COOKIE)에 의해 전송된 데이터를 받아옵니다. 이 변수를 사용하면 클라이언트가 전송한 데이터를 더 쉽게 처리할 수 있습니다
<form name ="frmtest" method="POST" action="phpinfo.php?id1=foo">
id2 : <input type ="text" name ="id2"><br>
<input type ="submit" value="확인">
</form>
<?php
echo "GET1 : ".$_GET["id1"] . "<br>";
echo "GET2 : ".$_GET["id2"] . "<br>";
echo "<br>";
echo "POST1 : ".$_POST["id1"] . "<br>";
echo "POST2 : ".$_POST["id2"] . "<br>";
echo "REQUEST1 : ".$_REQUEST["id1"] . "<br>";
echo "REQUEST2 : ".$_REQUEST["id2"] . "<br>";
?>
- $_ENV
-서버 환경 변수에 대한 정보를 담고 있는 슈퍼글로벌 변수입니다. 예를 들어, 서버의 운영 체제나 설정에 관한 정보를 얻을 수 있습니다.
- 정적변수 static
-PHP에서의 static: PHP에서 static은 주로 함수 내에서 사용되며, 함수 내에서 변수를 정의할 때 해당 변수가 함수가 호출될 때마다 초기화되지 않고 이전 호출에서의 값을 유지하도록 합니다.
-하지만 지역 변수처럼 해당 함수 내부에서만 접근할 수 있습니다.
<?php
function counter()
{
static $count = 0; // 정적 변수로 선언함
echo "함수 내에서 선언한 정적 변수 count의 값은 {$count}입니다.<br>";
$count++;
}
counter();
counter();
counter();
?>
-정적 프로퍼티에 값을 할당할 때는 = 연산자를 사용
-마찬가지로 객체를 생성할 필요 없이 '클래스::메소드()'로 사용
<?php
class StaticTest{
public static $a = "static으로 생성한 프로퍼티 <br/>";
public static function function1(){
$a = "static으로 생성한 메소드";
echo "$a";
}
}
echo StaticTest::$a;
StaticTest::function1();
StaticTest::$a="hoho";
echo StaticTest::$a;
?>
static으로 만든 것 hoho로 바꾼 결과값
- 함수내에서 static vs class에서 static 차이
- 자바 vs php에서 static차이점? (위의 내용참고 클래스에서 쓰면 비슷한듯)
'php > 개인공부' 카테고리의 다른 글
기본타입//boolean/integer/float/string/배열/객체/리소스/null (0) | 2023.10.24 |
---|---|
echo /print/ print_r/ var_dump 차이점 (0) | 2023.10.24 |
상수define()/마법 상수(magic constants) (0) | 2023.10.24 |
php코드영역/ echo()/ 변수선언/ 변수이름 생성규칙/ 변수 초기화/var_dump() (0) | 2023.10.24 |
php설치 (0) | 2023.10.23 |