함수

  • 내부 함수를 사용할 수 있다.

  • 클로저나 콜백에 사용할 수 있는 익명함수를 정의할 수 있다.

  • 기본적으로 Call by value지만 선언 시``&``를 붙이면 Call by reference로 동작한다.
    선언 시에만 ``&``를 붙이고, 호출 시에는 그냥 호출한다.
    함수나 메소드 앞에 ``&``를 붙일 수 있다.

  • ``php return [v1, v2]`` 배열을 만들면서 리턴할 수 있다. 

  • Parameter를 정의할 때 Type을 적어주면, 받을 수 있는 Type을 제한할 수 있다. ( Type Hinting )


객체

기본적으로 자바와 흡사한데 ``php trait``가 추가되었다.

클래스 외부에서 클래스의 ``php static, constant``에 접근할 때,
클래스 내부에서 상속 계층 상의 프로퍼티나 메소드에 접근할 때는 `` ->``가 아니라 `` ::``를 사용한다.

접근제한 키워드

``php public, protected, private`` 키워드를 지정할 수 있다.

생성자, 소멸자

```php
function __construct( ) { ... }
function __destruct( ) { ... }
```

상속

``php extends`` 단일상속만 허용한다.
``php implements`` 인터페이스는 여러개를 받아 구현할 수 있다.
``php final`` 오버라이드나 상속을 금지할 수 있다.

trait

오버라이드 우선순위는 ``클래스 메소드 > 트레이트 메소드 > 상속한 메소드`` 순이다.
```php
trait UserTrait{
    public function userTraitMethod(){
        ...
    }
}
class UserClass{
    use UserTrait, ...;
    ...
}
```