Q : 접근 제어자 public, private, protected의 차이
A : public은 어디서나, private는 같은 클래스에서, protected는 같은 클래스 및 자식 클래스에서 접근 가능
Q : PSR은 무엇인가?
A : php를 작성하기 위한 규칙, 코딩 스타일 가이드 권장 가이드, 버전마다 가이드가 다르므로 기존 가이드를 유지하는 게 좋음
Q : php 프레임워크 사용 경험, 장단점
A : Laravel 프레임워크를 주로 사용했고 CMS인 워드프레스가 있음
Laravel | 간단한 코드로 강력한 웹 애플리케이션을 개발할 수 있는 PHP계의 스프링! |
wordpress | 간단하게 CMS 사이트를 만들 수 있으며 더 깊게 파고들어서 테마 및 플러그인을 적용 및 개발을 PHP로 가능 |
Q : Null coalescing operator 사용 방법
A : 키워드가 ??인 이항 연산자로 다음 코드는 $_GET['user'] 값이 없으면 'guest'를 $user에 저장
$user = $_GET['user'] ?? 'guest'
Q : static는 무엇인가
A : Class 내에서 정적 함수 앞에 static 키워드를 붙여서 선언하면 Class의 Instance 없이 바로 호출할 수 있다
Q : PHP에서의 참조란
A : C나 Go의 포인터와 비슷한 개념으로 메모리 주소 공간을 같이 사용할 수 있다, &키워드를 사용해 주소를 표시
Q: 세션과 쿠키의 차이
A : 쿠키는 로컬에 필요한 데이터를 저장하고 서버의 처리가 필요하지 않기에 속도가 빠르다
세션은 서버에 저장하며 로컬에 SESSION ID를 쿠기로 저장하고 서버는 클라이언트마다의 세션을 갖기에 부하가 생김
Q : 게시판의 조회수 기능을 구현하는 방법
A : 보편적인 방법으로는 쿠키와 세션이 있다.
- 세션은 비교적 보안이 좋지만 서버에 저장하기 때문에 서버에 부하가 생김
- 쿠키는 서버의 공간을 절약하지만 비교적 보안이 취약하며 사용자가 임의로 제거할 수 있다.
이 값을 이용해 게시글 번호나 사용자 정보를 담아서 구분할 수 있다.
Q : fopen() 함수에 대해서 설명
A : filename이 지정한 파일을 엽니다, 성공 시 resource를 반환하고 실패하면 false를 반환
Q : include(), require(), include_once(), require_once() 차이
A : include는 호출될 때 파일을 포함시키며 파일이 없더라도 코드가 계속 실행
require는 무조건 파일을 포함시키며 파일이 없다면 Fatal Error로 코드가 실행되지 않음.
once가 추가되면 해당 파일을 오직 한번만 추가한다는 옵션을 추가하는 의미
Q : 2차원 배열에서 키값(문자)으로 값을 찾는 법
A : array_column으로 컬럼 배열을 찾고 array_search로 키 값을 통해 찾을 수 있다
array_search('찾으려는 값', array_column('값을찾으려는 배열', '찾을 컬럼'))
Q : 연산자 ==, === 의 차이
A : ==는 형변환해서 값이 같으면 참, ===는 지금 값의 데이터 타입이 같아야 참
Q : sql 인젝션을 대비한 php 방법
A : mysqli_real_escape_string 같은 기본 내장 함수로 체크하는 방법이 있지만
멀티바이트 환경에서는 우회 방법이 존재하므로 특수문자 필터링이 필요하다이
때 직접 필터링을 넣을 수도 있고 filter_var를 사용할 수도 있음
또는 PDO의 prepare 기능을 사용하면 기본적으로 해줌
Q : php 객체와 배열의 차이점
A : 아래와 같다
- 배열은 키, 인덱스로 접근하고 비슷한 데이터가 담음
- 객체는 프로퍼티로 접근하고 관련된 정보를 저장하며 메서들 호출
Q : 문자열에서 마지막 글자를 제거하고 싶을 때
A : replace, slice 등으로 문자열을 바꿀 수 있음
Q : php 장단점
장점
- 낮은 개발 장벽, 넓은 생태계
- 오픈소스
- 대부분 운영체제에서 돌아감
- 인터프리터이므로 바로 결과를 받을 수 있음
단점
- PHP 8.2 등으로 개선된 성능이 시장에 알려지지 않음
- 웹 개발 특화, 과거의 스파게티 코드 존재
Q : php의 현재 버전
A : 마지막 버전이 8.2.12로 알고 있음
https://www.php.net/releases/index.php
Q : Modern php란
A : Modern PHP는 과거의 PHP 이미지에서 벗어나기 위한 것으로 아래 규칙들을 지켜야 함
- 최신버전의 PHP
- PSR(표준권고) 준수
- 패키지 매니저(Composer) 사용
Q : PHP 다중 상속을 지원 여부
A : JAVA와 같이 다중 상속을 지원하지 않는다
이유로는 다이아몬드 문제와 같이 클래스간의 관계를 파악하기 어려워지는 걸 피하기 위함
Q : PHP 슈퍼 전역 변수
A : global 키워드로 전역변수를 지정할 수 있으며 아래와 같은 미리 정의된 슈퍼 글로벌을 제공
$GLOBALS // 전역 변수를 저장하는 슈퍼 글로벌 변수
$_SERVER // 현재 실행 중인 PHP 스크립트에서 관련된 서버 및 실행 환경에 대한 정보를 저장
$_GET // HTML의 FORM이 보낸 GET 정보를 저장
$_POST // HTML의 FORM이 보낸 POST 정보를 저장
$_FILES // 클라이언트가 웹 양식을 통해 서버에 업로드한 파일 정보를 저장
$_COOKIE // 클라이언트에 저장된 쿠키를 가져오거나 설정할 수 있게 쿠키 정보를 저장
$_SESSION // 세션 데이터 정보를 저장
$_REQUEST // 클라이언트의 요청을 저장
$_ENV // 서버 환경 변수 저장
Q : PHP 스코프 연산자
A : parent로 부모 클래스에 접근할 수 있고, self로 본인 클래스에 접근할 수 있음
Q : PHP 가비지 컬랙션
A : PHP 5.3에 추가된걸로 메모리 관리법, 강제로 수집할 수 있고 가비지 수집 메커니즘을 켜거나 끌 수 있음
Q : PDO는 무엇인가
A : PHP에서 데이터베이스에서 접속할 때 여러가지 처리하기 위한 메서드를 모은 클래스
Q : PHP 상수 선언
A : define 함수를 사용하거나 클래스 내에서 const 키워드로 선언할 수 있음
'PHP > Modern PHP' 카테고리의 다른 글
[PHP] 게시판 만들기 with MVC - 3부 View(List & Create) (1) | 2023.12.27 |
---|---|
[PHP] 게시판 만들기 with MVC - 2부 Routing (0) | 2023.12.26 |
[PHP] 게시판 만들기 with MVC - 1부 Migration (1) | 2023.12.26 |
PHP 써야 할까? (0) | 2022.11.18 |
PHP 인코더, 디코더 (소스코드 암호화) 해보기 (0) | 2020.12.21 |