PHP강의정리1_기초문법

-
php --ini // php.ini의 경로 표시
-
mac은 익스텐션 추가시 php.ini의 extension주석 제거후 직접 다운로드 필요
-
"hi my name is $name !" // 쌍따옴표 안에 변수사용가능
-
list(,$b)= ["aaa","bbb"] // $b 는 "bbb"이다
-
배열을 아래 형식처럼 섞어서 사용가능
echo var_dump([ 0 => "aa", "bb", "key3" => "cc" ]); -
PHP의 HEREDOC사용예제
$message="aa"; echo <<<HTML <!DOCTYPE html> <html lang="en"> <body> <h1>$message</h1> </body> </html> HTML; -
$$val 와 ${$val} // 유동변수 사용예제
// 1.변수를 사용하는 예제 $val1 = 'TEST1'; $val2 = 'val1'; // $val1을 참조함 // 1-1.문자열로 다른 변수를 참조한다 (유동변수) echo $val2; // val1 (일반참조) echo $$val2; // TEST1 (유동변수) // $$를 사용하여 문자열의 변수명을 가지고 다른 변수를 참조 가능 // 1-2 ${}을 사용하는 예제 , ${}형식이 $$이 되었음 $val3 = 'TEST3'; echo ${'val3'}; // TEST3 (유동변수) // ${}형식이 $$이 되었음 // 2.유동변수(동적변수)로 메서드를 호출하는 예제 class A{ function foo(){ echo "1"; } }; $a=new A(); $methodName = "foo"; $a->{$methodName}(); // 1 -
arr[]="test1" // array push랑 동일
-
<==> // 우주선 연산자
-
.= // 문자열붙이기 연산자
-
...arr 사용 가능 // 스프레드연산자 사용가능
-
null ?? "b" // nullish 연산자 사용가능
-
break 2 , continue 2 // 가장 아래의 for부터 나옴
-
true :? false // 삼항연산자를 줄여서 사용
$name = $_GET['name'] ?: 'Guest'; // 유저이름이 존재하면 이름을 반환하고 없으면 Guest를 반환 -
function test(...$args){echo $args[0]} // rest 파라미터
-
test(...$arr) // 스프레드
-
function test(string $arg){} // 파라미터 타입 지정
-
PHP는 글로벌스코프랑 펑션스코프가있다. 블록 스코프는 글로벌스코프 처리됨
// 1.블록 스코프 (글로벌 스코프 처리) if (true) { $message="aa"; } echo $message; // aa // 2.펑션 스코프 (글로벌 스코프 처리안됨) $message1 = "bb"; function foo(){ echo $message1; // 에러 global $message1; echo $message1; // bb echo $GLOBALS['message1']; // bb } foo(); // 3-1.펑션 스코프에서 글로벌 스코프 변수사용시, 익명함수로 변경후 use()를 사용 $message="aa"; $foo = function()use($message){ return $message; }; echo $foo(); // aa // 3-2. Global 키워드 사용 $a = 'hello'; function foo() { global $a; echo $a; // 출력: hello } foo(); -
static $변수명 // 해당 변수를 스레드가 종료될때까지 메모리에 올려서 계속 사용함
-
define()과 const의 차이
function foo(){ // const MESSAGE="bb"; 에러발생 const는 함수밖에서 사용 define('MESSAGE','aa'); } foo(); echo MESSAGE; // aa -
기본적으로 위의 예제처럼 MESSAGE 로 쓰인 경우 글로벌 변수를 의미한다
-
애로우펑션 ( use() 사용안할수있음 /멀티라인지원안함 / 7.4버전부터 / 주로 콜백함수로 사용함)
$message="aa"; $foo=fn()=>$message; // 한줄로 작성가능 use()를 사용하지 않고 글로벌 스코프의 함수를 펑션스코프로 전달가능 echo $foo(); // aa -
include // 파일 없으면 에러 발생안함
-
require // 파일 없으면 에러
-
return 내용을 include로 받기
//index1.php $message = "aa"; return [ 'message'=> $message ] //index2.php $args = include 'index1.php'; echo $args['message']; // aa -
전역변수 (글로벌변수)
$GLOBALS: $GLOBALS는 현재 스크립트에서 전역적으로 사용 가능한 모든 변수를 포함하는 슈퍼글로벌 변수입니다. $GLOBALS 배열의 키는 전역 변수의 이름이며, 값은 해당 변수의 값입니다. $_SERVER: $_SERVER는 현재 스크립트를 실행하는 웹 서버에서 사용 가능한 정보를 포함하는 슈퍼글로벌 변수입니다. 예를 들어, $_SERVER['HTTP_HOST']는 현재 요청의 호스트 이름을 반환합니다. $_GET: $_GET은 HTTP GET 요청으로 전달된 모든 쿼리 문자열을 파싱하여 저장하는 슈퍼글로벌 변수입니다. $_POST: $_POST는 HTTP POST 요청으로 전달된 모든 데이터를 저장하는 슈퍼글로벌 변수입니다. $_REQUEST: $_REQUEST는 HTTP GET 또는 POST 요청으로 전달된 모든 데이터를 저장하는 슈퍼글로벌 변수입니다. $_GET과 $_POST의 내용을 모두 포함합니다. $_COOKIE: $_COOKIE는 HTTP 쿠키(cookie)를 저장하는 슈퍼글로벌 변수입니다. $_SESSION: $_SESSION은 현재 사용자에 대한 세션 데이터를 저장하는 슈퍼글로벌 변수입니다. -
매직상수 (각 변수의 앞뒤에 __가 붙는다 예를들면 __DIR__ )
LINE : 현재 소스 코드의 라인 번호를 나타냅니다. FILE : 현재 소스 파일의 전체 경로와 파일명을 나타냅니다. DIR : 현재 파일이 위치한 디렉토리의 경로를 나타냅니다. FUNCTION : 현재 함수의 이름을 나타냅니다. CLASS : 현재 클래스의 이름을 나타냅니다. TRAIT : 현재 트레이트의 이름을 나타냅니다. METHOD : 현재 메서드의 이름을 나타냅니다. NAMESPACE : 현재 네임스페이스의 이름을 나타냅니다.매직메서드
__construct() : 객체가 생성될 때 호출되는 생성자 함수입니다. (*) __destruct() : 객체가 소멸될 때 호출되는 소멸자 함수입니다. __call() : 객체에 정의되지 않은 메소드가 호출될 때 호출되는 함수입니다. (*) __callStatic() : 클래스에 정의되지 않은 정적 메소드가 호출될 때 호출되는 함수입니다. __get() : 객체의 프로퍼티에 접근할 때 호출되는 함수입니다. __set() : 객체의 프로퍼티를 설정할 때 호출되는 함수입니다. __isset() : isset() 함수로 객체의 프로퍼티가 설정되어 있는지 확인할 때 호출되는 함수입니다. __unset() : unset() 함수로 객체의 프로퍼티를 제거할 때 호출되는 함수입니다. __toString() : 객체를 문자열로 변환할 때 호출되는 함수입니다. __invoke() : 객체를 함수처럼 호출할 때 호출되는 함수입니다. (*) __set_state() : var_export() 함수로 내보낸 문자열에서 객체를 생성할 때 호출되는 함수입니다. __clone() : 객체 복제시 호출되는 함수입니다. -
PHP의 문서의 매개변수의 형태
- 필수 매개변수 (Required parameter): [] 없이 매개변수 이름으로만 표기됩니다. 함수 호출시 반드시 전달되어야 하는 매개변수입니다.
- 선택적 매개변수 (Optional parameter): []로 감싸져 있습니다. 함수 호출시 전달되지 않아도 되는 매개변수입니다. 따라서, 이러한 선택적 매개변수에 대한 기본값(default value)이 필요합니다.
- 가변 매개변수 (Variable-length parameter): 함수의 매개변수 목록 마지막에 ...으로 표시됩니다. 이는 함수가 가변적인 개수의 매개변수를 받을 수 있음을 의미합니다.
- Nullable 매개변수: ? 를 매개변수 이름 앞에 붙입니다. 이는 해당 매개변수가 NULL 값을 가질 수 있다는 것을 나타냅니다. PHP 7.1부터 지원됩니다.
- 타입 선언: 매개변수 이름 뒤에 콜론(:)과 함께 타입을 명시할 수 있습니다. 이는 해당 매개변수가 특정 타입의 값만을 받아들인다는 것을 나타냅니다. PHP 7.0부터 지원됩니다.
- 참조 전달 매개변수: 매개변수 이름 앞에 &를 붙이면 해당 매개변수가 참조 전달(reference passing)됩니다. 이는 해당 매개변수가 함수 내부에서 변경될 경우, 함수 호출자에게도 그 변경사항이 적용된다는 것을 의미합니다.
- 초기값이 있는 매개변수: 함수의 매개변수 목록에서, 일부 매개변수에는 초기값(default value)이 할당됩니다. 이는 해당 매개변수가 함수 호출시 전달되지 않았을 때, 기본적으로 가질 값입니다. 이는 선택적 매개변수(optional parameter)와 동일한 개념입니다.
0709 추가
-
Nullish기능(??)에 대해서 추가 설명
$val부분이 null뿐만 아니라 변수가 정의 되지 않은 경우에도 사용가능하다
자바스크립트의 nullish기능은 변수가 정의되지않은 경우 에러가 나지만 php는 다르다
PHP // $post 변수가 정의되지 않은 경우 $value = $post->content ?? '내용없음'; echo $value; // 출력 결과: '내용없음' JS // $post 변수가 정의되지 않은 경우 var post; var value =post.content ?? '내용없음' // Uncaught TypeError: Cannot read properties of undefined (reading 'content') console.log(value); //