PHP/문법

최근 수정 시각:  (5년 전)

목차
1. 개요2. 기본3. 편집 지침4. 변수와 자료형5. 기본 입출력6. 함수7. 클래스

1. 개요 [편집]

PHP 의 문법을 설명하는 문서다.
가장 많이 쓰는 PHP 7.2 버전을 기준으로 설명한다.

2. 기본 [편집]

기본적인 PHP코드는 다음과 같다

각 php파일은 <?php로 시작되며 끝태그(?>)는 php코드만 있을때 붙이지 말아야 한다.
PHP는 변수 선언시 $로 선언된다.
PHP에는 함수, 클래스, 트레이트, 인터페이스, 추상 클래스, 추상메소드 등이 있다.
PHP에서는 세미콜론을 붙여야한다.

3. 편집 지침 [편집]

소스코드 예시

{{{#!syntax php 소스코드 }}}

PHP 코딩스텐다드 PSR-1과 PSR-12를 지켜 주시길 바랍니다.

4. 변수와 자료형 [편집]

PHP에서 변수선언은 $로 시작하며 변수를 선언할때에는 자료형(타입)을 지정하지 않는다.
함수의 매게변수와 클래스에서는 타입을 지정할수있다.

<?php
  $a = 1;


타입은
* int : 정수형
* float : 실수형
* bool : true / false 인 boolean 값
* string : 문자열
* object : 객체
* callable: 호출 가능 함수
* null: null
* array : 배열 : PHP의 배열은 딕셔너리와 연결리스트의 기능이 합쳐져 있다.
* iterable : 객체인데 배열처럼 반복가능한 타입 PHP 7.1에서 도입 됨.

* undefined: 타입은 아니지만 이용할 수 없는 변수가 참조를 하면 표시된다.

그 밖에 유니온과 mixed 가 있다.

5. 기본 입출력 [편집]

기본 출력은 echo 와 print() 함수가 있다.

<?php
    echo "Hello world";


<?php
    print("Hello world");


PHP는 처음부터 웹 서버와 템플릿 역할을 하기 때문에
입력 명령어는 두 분류로 나뉜다.
웹으로 사용자 요청 받을때

$_GET[]; // HTTP API의 get 을 할당
$_POST[]; // HTTP API의 post 를 할당
php://input // 그 밖에 입력

php파일을 서버에서 직접사용하거나 터미널에서 입력할때

file_get_contents('php://stdin');

6. 함수 [편집]

함수선언은 function 키워드로 한다.

<?php
    function add($a, $b) // 정수 두개를 더하는 함수
    { 
            return $a + $b
    };
    add(1, 2); // 함수 사용.


매게 변수타입과 리턴타입을 지정할 수 도 있다.
리턴 타입은 함수이름 끝에 : 타입
<?php
    function add(int $a, int $b ): int // 
    { 
        return $a + $b;
    }  
    add(1, 2); // 함수 사용.


* 익명 함수
말그대로 이름이 없는 함수다.
다른 변수에 대입해서 쓰거나 클로저에 사용된다.
또는 즉시 실행함수로 쓰일 수 도있다.

<?php
    $addTest = function (int $a, int $b ): int // $addTest 라는 변수에 대입
    { 
        return $a + $b;
    };

    $addTest(1, 2);


* 자기 실행함수 또는 즉시 실행함수라고 부른다. [1]
함수를 정의 함과 동시에 바로 실행된다.
<?php
   (function (int $a, int $b ): int
    { 
        return $a + $b;
    })(1,2 ); // 바로  실행됨

7. 클래스 [편집]

//Animal.php
<?php
    class Animal {  // 동물에 관한 클래스
        private $eatType; //먹이 종류
        private $legs; // 다리갯수
        
       function  __construct($eatType, $legs)
        {
            $this->eatType = $eatType;  //객체에 접근할때에는 -> 를 이용한다.
            $this->legs = $eatType;
        }

        function getEatType(){
            return $this->eatType;
        }
        
        function setEatType($eatType){
            $this->eatType = $eatType;
        }
        
        function getLegs() {
            return $this->legs;
        }
        
        function setLegs($legs) {
            $this->legs = $legs;
        }
    
    }

    //초식을 하는 네발 짐승
    $animal1 = new Animal("초식", 4); // 객체 생성할때 new 를 쓴다.

    $animal1->eatType = "잡식";  // $eatType 이 private 이라 접근불가

    $animal1->getEatType(); // getter와 setter 를 만들어 접근해야한다.


PHP 도 객체지향개념이 있다.
PHP에서 클래스는 전부 public 이다.
PHP 클래스에서 맴버변수는 private, public, protect 로 접근제한자를 지정할 수가있다.

생성자는 fucntion __constructor() 를 쓴다. // PHP 5부터 바뀐 문법.
클래스안에서 클래스의 프로퍼티에 접근할때는 "this->프로터피" 를 쓰며 $기호를 붙이면 않된다.

* 클래스의 상속

<?php
    class bird extends Animal {
        private $wings; //날개
        
       function  __construct($eatType, $legs, $wings);
        {
            parent::__construct($eatType, $legs); // 부모생성자는 parent:: 으로 호출
            $this->wings = 2;
            
        }

         function getWings() {
            return $this->wings;
        }
        
        function setWings($wings) {
            $this->wings = $wings;
        }

    
    }

    $비둘기  = new bird("잡식", 2, 2); 
    $삼족오  = new bird("잡식", 3, 2);

    echo $비둘기->legs; // 2
    echo $삼족오->legs; //3

상속은 다른언어들과 마찬가지로 extends 키워드를 사용하며
부모생성자는 parent::() 으로 호출한다.
[1] IIFE

라이선스를 별도로 명시하지 않은 문서는 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다.
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.

문서의 기여자는 역사 탭에서 확인할 수 있습니다.
접두어의 N: - 나무위키 사용자, R: - 리그베다 위키의 사용자를 뜻합니다.
자세한 사항은 나무위키에서 동일한 문서의 역사를 참고하시기 바랍니다.