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); //