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의 문서의 매개변수의 형태

    1. 필수 매개변수 (Required parameter): [] 없이 매개변수 이름으로만 표기됩니다. 함수 호출시 반드시 전달되어야 하는 매개변수입니다.

    2. 선택적 매개변수 (Optional parameter): []로 감싸져 있습니다. 함수 호출시 전달되지 않아도 되는 매개변수입니다. 따라서, 이러한 선택적 매개변수에 대한 기본값(default value)이 필요합니다.

    3. 가변 매개변수 (Variable-length parameter): 함수의 매개변수 목록 마지막에 ...으로 표시됩니다. 이는 함수가 가변적인 개수의 매개변수를 받을 수 있음을 의미합니다.

    4. Nullable 매개변수: ? 를 매개변수 이름 앞에 붙입니다. 이는 해당 매개변수가 NULL 값을 가질 수 있다는 것을 나타냅니다. PHP 7.1부터 지원됩니다.

    5. 타입 선언: 매개변수 이름 뒤에 콜론(:)과 함께 타입을 명시할 수 있습니다. 이는 해당 매개변수가 특정 타입의 값만을 받아들인다는 것을 나타냅니다. PHP 7.0부터 지원됩니다.

    6. 참조 전달 매개변수: 매개변수 이름 앞에 &를 붙이면 해당 매개변수가 참조 전달(reference passing)됩니다. 이는 해당 매개변수가 함수 내부에서 변경될 경우, 함수 호출자에게도 그 변경사항이 적용된다는 것을 의미합니다.

    7. 초기값이 있는 매개변수: 함수의 매개변수 목록에서, 일부 매개변수에는 초기값(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); // 
Mar 25, 2023 Views 102