너의 개발은/PHP

    PHP: 네임스페이스

    네임스페이스 네임스페이스는 분량은 짧지만 매우 x 2 중요합니다. 클래스와 함께 모던 PHP를 이루는 근간이며, composer 와 같은 패키지 매니저를 사용할 때 중요하게 작용하기 때문입니다. 이는 우리가 composer package 를 만들거나 할 때도 필요합니다. 이는 단순히 우리가 작성한 코드를 구역으로 나누는 것으로 같은 서드 파티, 또는 빌트인에 속하는 함수, 클래스와 중복을 고려하지 않고도 클래스나 함수의 이름을 지정해줄 수 있습니다. 네임스페이스를 사용하기 이전에는 중복을 피하기 위해 긴 함수, 클래스 이름을 사용하여 나타내야 했는데 이제는 그럴 필요가 없습니다. namespace 네임스페이스는 naemspace 키워드를 사용하여 나타낼 수 있으며, 내부에는 함수와 클래스, 상수 등 여러..

    PHP: 매직 메서드

    매직 메서드 매직 메서드는 특수한 메서드로서 클래스에서 특별한 동작을 하게되는데, 그 중에는 PHP: 상속에서 이야기한 생성자와 소멸자도 포함하고 있습니다. 대체로 __ 로 시작하는 메서드 명이 그러하며 이는 사용자가 직접 호출하는 것이 아니고, 특정 행동을 취했을 경우 호출되는 콜백함수같은 것입니다. 따라서 인터페이스 규격이 정해져 있으며 그에 따라 정의해야 하고, 리턴 값또한 그러해야 합니다. 대부분 리턴값은 없는 경우가 많으나 일부 매직 메서드의 경우 존재합니다. 매직 매서드는 종류가 많은데, 전부 다 할 수는 없으니 임의로 몇 가지 토픽으로 나누어서 해보고자 합니다. 주제는 세 가지로, 각각 Method, Property, Serialize. 그 외에 __toString() 과 같은 것들도 있으나..

    PHP: 추상화 (추상 클래스, 인터페이스, 트레이트)

    추상화 추상화를 한다는 것은 형식만 선언한 채 구현은 사용자에게 맡기는 것을 이야기합니다. 메서드의 이름, 파라매터, 반환 값 등을 선언만 한 채 상속과 같은 개념을 사용하여 내용을 구현합니다. 추상화를 사용하면 구현에 상관없이 특정한 인터페이스에 맞춰서 메서드를 콜하거나 데이터를 받음으로서 소통할 수 있다는 좋은 점이 있는데, 상속과 함께 이것을 사용하면 확장성이 눈에 띄게 상승합니다. 추상 클래스 추상 클래스는 일부는 구현하지 않고, 일부는 구현한 상태로 제공하며 상속의 형태로 진행하기 때문에 계를 표현하는 용도로 쓰는 것이 좋습니다. 일반적인 클래스와 마찬가지로 메서드와 프로퍼티를 가질 수 있지만 추상 메서드는 private 가시성으로 선언될 수 없습니다. abstract 추상 클래스는 abstra..

    PHP: 상속 (생성자, 가시성, Final)

    상속 상속은 PHP: 클래스에서 잠깐 살펴보았듯, 계를 표현합니다. 예를 들어 동물이라는 최상위 클래스를 상속받은 사람, 강아지, 고양이 등이 있을 수 있습니다. 상속이라는 개념을 사용하면 확장에 유용하고 추상 클래스나 인터페이스를 함께 사용하면 다양한 서드파티 클래스들을 받아서 이를 처리할 수 있게됩니다. 상속이라는 개념은 객체지향에서 중요한 개념이며 반드시 알아야 하는 사항이기도 합니다. 이는 PHP 뿐만 아니라 자바나 C++ 등 다른 언어에서도 중요합니다. extends 상속을 사용하는 법 자체와 extends 키워드는 PHP: 클래스에서 알아보았으니 조금은 다른 주제에 대해 이야기해보자면, 상속과 함께 사용할 수 있는 개념인 생성자, 가시성, Final 키워드에 대한 것입니다. 개별의 주제는 각각..

    PHP: Static (정적 변수, 정적 메서드, 늦은 정적 바인딩)

    Static static 키워드는 PHP 언어에서 대략 세 가지의 의미로 쓰이는데 정적 변수 선언, 정적 메서드, 늦은 정적 바인딩입니다. 특히나 늦은 정적 바인딩의 경우 조금 헷갈리는 요소도 있으니 주의해야 합니다. 정적 변수 선언 함수 내부에서 일반적으로 변수를 사용하면 함수 호출이 끝나고 스택에서 로컬 변수가 사라져야 하지만, static 변수쓰면 값을 유지할 수 있도록 해주는데, 이에 관한 이야기는 이번 포스팅에서는 크게 언급하지 않을 것이고, 자세한 사항은 PHP: 변수를 참고해주시기 바랍니다. 정적 메서드 메서드 선언 시 static 키워드를 함께 적음으로서 정의합니다. 클래스 로드시 정적 공간 메모리에 할당되므로 this 에 바로 접근할 수 없으며 self:: 와 같은 문맥 키워드를 적어야 ..