본문 바로가기

코딩/PHP

PHP생활코딩

생성자
접근제어자access modifier , property visibility
access level modifier는 프로그램이 점점 거대해지고 복잡하면서 아주 작은 논리적 결함이 큰 문제를 발생시킬 수 있기에 이런 가능성을 차단하고자 생


캡슐화encapsulation
규모있는 프로젝트가 아니라면 공감하기 어렵다

값을 받기전에 유효성을 검사할 수있는 방법은 인스턴스변수에 접근제한 후 메소드에서 처리하는 방법 밖에 없다(객체지향을 쓰면 이런 방식이 굉장히 자연스러워짐)


접근제어자1,2,3
function에 private가 붙은 것은 클래스 설계자를 위한 함수임을 뜻한다. 클래스 사용자가 신경 쓸 필요는 없음. 단순히 클래스를 이해하고 싶다면 보는 것도 괜찮다

함수에서 접근지시자의 default 값은 public!

사용자가 필요한 메소드 말곤 모두 private으로 선언한다. 그냥 모든 함수는 private인데 그중 사용자가 필요할 것 같은 것만 public으로 바꿔준다고 생각하면된다. 허락되는 부분과 감춰야될 부분이 잘 나누어진 것이 좋은 객체임

Public 함수는 나중에 함수 이름을 바꾼다거나 형식을 바꾼다거나 할 수 없다 . 이미 사용자들이 다 사용하고 있리 때문에... 최대한 보수적으로 public 으로 바꿔라

이런 버전업데이트도 생각해서 프로그램을 짜야됌,,

상속inheritance
클래스에 기능을 추가하고 싶을 때 내가 작성한 클래스가 아닌경우 실제 클래스를 수정할 수 없기 때문에 상속해서 클래스를 확장하면된다

코드의 재사용기능도 있음

상속4 활용
바퀴를 다시 만들지 마라 ->바퀴는 이미 만들어놨는데 왜 다시 만드냐 바퀴는 가져다 쓰고 다른 것에 집중해라(코딩할 때의 마음가짐, 생각. 일반적으로 무엇을 만드는 일과는 조금 다르다.)

가독성이 좋아진다. 코드가 보기에 깔끔해짐

부모클래스를 수정하면 자식클래스를 모두 수정한것과 같은 기능을 함.. 변수같이 쓰면 좋을듯 ,,통합적관리...

클래스로딩과 네임스페이스1
네임스페이스=패키지

클래스로딩과 네임스페이스2
spl_autoload_register() 이라는 함수기능!

네임스페이스에선 역슬래쉬를 써야한다
Mac에서는 슬래쉬를 디렉토리구분자로 쓴다
윈도우는 역슬래쉬


컴포저설치
composer.phar을 usr/local/bin에 넣으면 composer이라는 명령어를 전역적으로 터미널에서 어떤디렉토리에서든 쓸 수 있다

컴포저4의존성
네임스페이스를 use 했다고 해서 require가 되는 것은 아니다. 단순히 이런 namespace를 쓰겠다는 말임! 네임스페이스의 코드가 있는 파일들을 require해야 똑바로 동작함.

Php 상속 protected
Private로 하면 자식클래스가 접근할 때도 set,get을 통해 접근해야함.. 하지만 자식클래스에서는 set을 통해 필터링되지 않는 특별한 값을 넣어야 할 수도 있음
그럴 때 protected 쓸 수 있을듯


Php상속과 final
final =상속하지 못하게함. 함수와 클래스 앞에 쓰면 상속받지 못하게한다.
클래스, 함수가 변화될 가능성이 있거나 좀 불안할 때 상속을 하지 못하게 막을 수 있음.
이 클래스를 상속해버리면 클래스가 변화되었을 때 상속받은 모든 자식클래스가 영향을 받게된다.

Interface소개
클래스는 복수의 Interface를 implements할 수 있다.
Php에서 함수의 매개변수의 타입을 지정하고 디폴트값을 넣고 반환형을 제한하는 방법 확실히 정리하기!

abstract형식
abstract기능은 메소드를 위한 것. 추상메소드를 하나라도 가지고 있으면 그 클래스에는 abstract라고 명시해줘야함. 클래스의 abstract는 표시하는 용도일 뿐

abstract 3 템플릿디자인패턴(다시들어봐도좋을듯 final의 쓰임에 대해서도 잘게 해줌.)

디자인패턴: 코딩하면서 꾸준하게 나타나는 문제를 형식화(패턴화) 시켜서 정리해놓은 것을 디자인 패턴이라고 한다

템플릿메소드패턴은 여러가지 디자인 패턴중에 하나임!

abstract4(템플릿메소드구현)

@@아주 작은기능이라도 메소드로 따로 빼서 작업하는게 코드의 유지보수, 가독성에 좋다!

Abstract메소드를 오버라이딩 할 때는 access level도 똑같이 맞춰줘야한다.
Private는 오버라이딩 못하니 제외하고 protected면 오버라이딩 할 때도 protected해줘야한다.
근데 아닌거 같은데. 오버라이딩 할때는 접근제어자는 바꿔도 됐던것 같은데...
바꿔도 되긴 한데 제한이 느슨해지는 쪽으로는 되는데 좁아지는 쪽으로는 안되는듯?? ㅇㅇ맞음 아래링크 참조


#디자인패턴 구글링 해서 익히기
#오버라이딩 할때 level modifier 어떻게 바꿀 수 있는지 확정하기(아래링크참조)

https://seodh007.tistory.com/m/entry/%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9-%EC%A0%91%EA%B7%BC%EC%A0%9C%EC%96%B4%EC%9E%90