1. PHP의 기본 부분
1. PHP 언어의 주요 장점 중 하나는 크로스 플랫폼입니다.
PHP 실행 환경의 최적 조합은 Apache+MySQL+PHP입니다. 이 실행 환경은 다양한 운영체제(예: Windows, Linux 등)에서 구성이 가능하고 운영체제에 의해 제한되지 않으므로 크로스라고 합니다. -platform
2. WEB 개발 시 데이터를 제출하는 방법은 몇 가지가 있나요? 차이점은 무엇입니까? Baidu는 어떤 방법을 사용하나요?
Get 및 post 메서드
차이:
(1) URL 가시성: get 메서드 url 매개변수는 표시되고 post는 표시되지 않습니다.
(2) 캐시 가능성: get 메서드는 캐시될 수 있지만 post 메서드는 캐시될 수 없습니다. 캐시되었습니다.
(3) 전송 데이터 크기: get의 일반적인 전송 데이터 크기는 2k~4k를 초과하지 않습니다(브라우저에 따라 한도는 다르지만 차이가 크지 않음). php.ini 구성 파일에 따라 설정되며 무한히 커질 수도 있습니다.
(4) 데이터 전송: get 메소드는 url 주소 표시줄 스플라이싱을 통해 매개변수를 전송하는 데 사용되며, post 메소드는 본문을 통해 데이터를 전송하는 데 사용됩니다.
권장 사항:
1. 기밀 정보가 포함된 경우에는 Post 데이터 제출 방법을 사용하는 것이 좋습니다.
2. 데이터 쿼리, 데이터를 추가, 수정 또는 삭제하는 것이 좋습니다.
Baidu에서 사용하는 get 메서드는 해당 URL
3에서 볼 수 있습니다. . of PHP
Framework: CI, Yii, Laravel과 같은 많은 프레임워크가 있습니다. 잠깐, 우리가 배운 것은 thinkphp
템플릿 엔진입니다. 교과서에도 있고, 우리가 배운 것은 똑똑합니다
시스템: 많습니다. 예를 들어 Kangsheng의 제품(uchome, supesite, discuzX 등), Empire System, DEDE(Dream Weaver), ecshop 등 우리가 배운 것은 DEDECMS, Ecshop
4입니다. 당신이 마스터한 웹 프론트엔드 기술은 무엇입니까?
p+CSS 웹 페이지 레이아웃, JavaScript, jQuery 프레임워크, 포토샵 이미지 처리에 능숙함
5. AJAX의 장점은 무엇인가요?
ajax는 부분 새로 고침을 달성하기 위해 javascript 또는 JQuery 프레임워크를 통해 구현할 수 있는 비동기 전송 기술로, 서버에 대한 부담을 줄이고 사용자 경험을 향상시킵니다.
6. 프로그램에 있어 보안은 매우 중요합니다. 개발 시 주의해야 할 보안 메커니즘이 무엇인지 알려주세요.
(1) 인증번호를 사용하여 등록기 침수를 방지하세요.
(2) 전처리, 매개변수 바인딩, 매개변수 필터링 및 이스케이프를 사용하여 SQL 주입을 방지합니다.
(3) 토큰을 사용하여 원격 제출을 방지하고 토큰을 사용하여 로그인 상태를 확인합니다.
7. 프로그램 개발 과정에서 프로그램의 운영 효율성을 높이는 방법은 무엇인가요?
(1) SQL 문을 최적화하고, 쿼리 문에서 select *를 사용하지 말고, 어떤 필드를 사용하여 하위 쿼리를 덜 사용하고 덜 퍼지 쿼리를 사용하여 대체할 수 있는지 확인하세요.
(2) 데이터 테이블에 인덱스를 생성합니다.
(3) 프로그램에서 자주 사용되는 데이터에 대한 캐시를 생성합니다(예: redis를 사용하여 데이터를 캐시하기, ob를 사용하여 동적 페이지를 정적화하는 등).
(4) mysql의 마스터-슬레이브 복제를 만들고 읽기와 쓰기를 분리합니다. (mysq 실행 효율성 및 쿼리 속도 향상)
(5) 로드 밸런싱에는 nginx를 사용합니다. (다형성 서버에 대한 접근 압력을 균등하게 분배)
8. PHP를 다른 데이터베이스와 함께 사용할 수 있나요?
PHP는 MYSQL 데이터베이스와 가장 잘 결합됩니다. 물론 PHP는 PostgreSql, SqlServer, Oracle, SqlLite 등과 같은 다른 데이터베이스와도 사용할 수 있습니다.
9. 요즘 프로그래밍에서는 MVC 3계층 구조가 자주 사용됩니다. MVC의 3계층은 어떤 장점이 있나요?
MVC의 세 가지 계층은 비즈니스 모델, 뷰 및 컨트롤러를 참조합니다. 컨트롤러 계층은 모델을 호출하여 데이터를 처리한 다음 데이터를 뷰 계층에 매핑하여 표시합니다.
장점은 다음과 같습니다.
① 코드 재사용성을 확보하고 코드 중복을 피할 수 있습니다.
②M과 V는 코드 분리를 실현하여 동일한 프로그램이 다른 표현을 사용할 수 있습니다.
10.json 데이터 형식을 이해하시나요?
JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. json 데이터 형식은 고정되어 있으며 여러 언어로 데이터를 전송하는 데 사용할 수 있습니다.
json 형식을 처리하는 PHP 함수는 json_decode(string $json [, bool $assoc])이며, 이는 JSON 형식 문자열을 받아 PHP 변수로 변환합니다. 매개변수 json은 디코딩할 json 문자열 형식 문자열입니다. . 이 매개변수가 TRUE이면 assoc는 객체 대신 배열을 반환합니다.
Json_encode: PHP 변수를 json 형식으로 변환합니다.
11. Print, echo, print_r의 차이점은 무엇인가요?
(1) echo와 print 모두 출력을 할 수 있다는 차이점은 echo는 함수가 아니고 반환 값도 없는 반면, print는 반환 값이 있는 함수이므로 상대적으로 그냥 출력하는 것이 더 빠릅니다. echo, print_r은 일반적으로 디버깅에 사용되는 변수에 대한 정보를 인쇄하는 데 사용됩니다.
(2) print는 문자열을 인쇄하는 것입니다
(3) print_r은 배열 객체와 같은 복합 유형을 인쇄하는 것입니다
12. SESSION과 COOKIE의 차이점은 무엇인가요?
(1) 저장 위치 : 세션은 서버에 저장, 쿠키는 브라우저에 저장
(2) 보안 : 쿠키보다 세션 보안이 높음
(3) 세션은 '세션 서비스'이므로 사용 시 서비스를 켜야 하며, 쿠키를 켜둘 필요는 없으며 직접 사용할 수 있습니다.
13. 일반적으로 사용되는 PHP 처리 배열 기능은 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)
(1) array()는 배열을 생성합니다
(2) in_array()는 요소가 배열에 있는지 확인합니다
(3) count ()는 배열을 반환합니다. 요소 수
(4) array_merge() 여러 배열을 하나의 배열로 병합
(5) array_diff() 두 개 이상의 배열 차이 비교
(6) array_intersect() 두 개 또는 두 개 가져오기 둘 이상의 배열의 교차점
(7) array_keys() 배열의 키 목록 가져오기
(8) array_values() 배열의 값 목록 가져오기
(9) array_unique() 중복 값 삭제 배열에서
(10) array_push()는 배열의 끝에 하나 이상의 요소를 삽입합니다 (push)
(11) array_pop()은 배열의 마지막 요소를 팝하고 반환합니다 (push)
(12 ) array_walk() 사용자 정의 사용 이 함수는 배열의 각 요소에 대해 콜백 처리를 수행합니다
14. PHP에서 문자열을 처리하는 일반적인 함수는 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)
(1) Trim()은 문자열 양쪽에 있는 공백 문자와 기타 문자를 제거합니다.
(2) strlen()은 문자열의 길이를 가져옵니다. 문자열
(3) mb_strlen() 문자열 길이를 가져옵니다. (문자 인코딩을 지정할 수 있으며 길이는 중국어 문자열에 대해 계산됩니다.)
(4) substr()은 문자열의 일부를 반환합니다.
( 5) str_replace() 하위 문자열 교체
(6) str_repeat () 문자열 반복
(7) is_string() 변수가 문자열인지 확인
(8) str_shuffle () 문자열을 무작위로 섞기
(9 ) sprintf() 반환 형식화된 문자열을 기반으로 생성된 문자열(일반적으로 테이블을 분할한 후 데이터 테이블 이름을 얻는 데 사용됨)
(10) strstr() 문자열이 처음 나타나는 위치 찾기
(11) addlashes 백슬래시 사용
15. PHP에서 시간을 처리하는 데 사용되는 일반적인 함수는 무엇입니까? (함수의 '매개변수'와 '반환값'을 주목하세요)
(1) date() 현지 시간/날짜 형식을 지정합니다.
(2) getdate() 날짜/시간 정보를 가져옵니다.
(3) date_default_timezone_set()은 기본 시간대를 설정합니다.
(4) date_default_timezone_get()은 기본 시간대를 반환합니다.
(5)mktime() 날짜의 Unix 타임스탬프를 반환합니다.
(6) strtotime() 문자열의 날짜 및 시간 설명을 Unix 타임스탬프로 구문 분석합니다.
(7) strftime() 지역 설정에 따라 현지 시간/날짜 형식을 지정합니다.
16. 프로세스 데이터베이스? (함수의 '매개변수'와 '반환값'에 집중하세요)
PHP 매뉴얼을 참고해서 주의 깊게 읽어주세요. 이것은 매우 중요합니다.
17 PHP에서 파일을 조작하기 위해 일반적으로 사용되는 기능은 무엇입니까? ? (함수의 '매개변수'와 '반환값'에 집중하세요)
(1) 파일 열기 fopen()
(2) 파일 읽기 fgets() 참고: file_get_contents()도 파일을 읽습니다
(3 ) 파일에 쓰기 fwrite(); 참고: file_put_contents()도 파일에 쓸 수 있습니다
(4) 파일 핸들을 닫습니다 fclose()
(5) 파일 이동/이름 바꾸기 rename()
(6) 파일 복사 copy ()
(7) vim 파일 생성 또는 touch
(8) 파일 삭제 unlink()
(9) 파일에 마지막으로 액세스한 시간 가져오기 fileatime()
(10 ) 파일이 마지막으로 수정된 시간 가져오기 filemtime ()
(11) 파일 크기 가져오기 filesize()
(12) 파일 형식 가져오기 filetype()
(13) 파일 세부 정보 가져오기 state()
(14) 디렉토리인지 확인 is_dir()
18. 디렉토리(폴더)를 조작하는 PHP의 일반적인 기능은 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)
(1) opendir() 디렉토리 열기
(2) readdir() 디렉토리 읽기
(3) rmdir() 디렉토리 삭제
(4 ) 디렉터리 핸들을 닫습니다.closedir()
(5) 디렉터리 만들기 mkdir()
(6) 경로 dirname()의 디렉터리 부분을 반환합니다.
(7) 현재 작업 디렉터리 가져오기 getcwd( )
(8) 목록 scandir()
2. 데이터베이스 부분
1. 일반적인 관계형 데이터베이스 관리 시스템 제품은 무엇입니까?
답변: Oracle, SQL Server, MySQL, Sybase, DB2, Access 등
2. SQL 언어에는 어떤 부분이 포함되나요? 각 섹션의 액션 키워드는 무엇입니까?
답변: SQL 언어는 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL) 및 데이터 쿼리(DQL)의 네 부분으로 구성됩니다.
데이터 정의: 테이블 생성, 테이블 변경, 테이블 삭제, 인덱스 생성/삭제 등
데이터 조작: 선택, 삽입, 업데이트, 삭제,
데이터 제어: 부여, 취소
데이터 쿼리: 선택
3 ,무결성 제약 조건에는 무엇이 포함되나요?
데이터 무결성은 데이터의 정확성과 신뢰성을 의미합니다.
포함:
(1) 엔터티 무결성: 테이블의 각 행이 테이블의 고유한 엔터티임을 규정합니다.
(2) 도메인 무결성: 테이블의 열이 값 범위, 정밀도 및 기타 규정을 포함하는 특정 데이터 유형 제약 조건을 충족해야 함을 의미합니다.
(3) 참조 무결성: 두 테이블의 기본 키와 외래 키의 데이터가 일관되어야 한다는 의미로, 테이블 간 데이터의 일관성을 보장하고 데이터베이스 확산 시 데이터 손실이나 의미 없는 데이터를 방지합니다.
(4) 사용자 정의 무결성: 다양한 관계형 데이터베이스 시스템에는 애플리케이션 환경에 따라 특별한 제약 조건이 필요한 경우가 많습니다. 사용자 정의 무결성은 특정 관계형 데이터베이스에 대한 제약 조건으로, 특정 응용 프로그램이 충족해야 하는 의미론적 요구 사항을 반영합니다.
4. 거래란 무엇인가요? 그리고 그 특징은?
트랜잭션: 일련의 데이터베이스 작업이자 데이터베이스 애플리케이션의 기본 논리 단위입니다.
특징:
(1) 원자성: 즉, 모든 트랜잭션이 실행되거나 전혀 실행되지 않는 불가분성입니다.
(2) 일관성 또는 문자열 가능성. 트랜잭션을 실행하면 데이터베이스가 하나의 올바른 상태에서 다른 올바른 상태로 변환됩니다.
(3) 격리. 트랜잭션이 올바르게 커밋되기 전에는 트랜잭션으로 인해 발생한 데이터 변경 사항이 다른 트랜잭션에 제공될 수 없습니다.
(4) 내구성. 트랜잭션이 올바르게 제출되면 그 결과는 데이터베이스에 영구적으로 저장됩니다. 트랜잭션 제출 후 다른 오류가 발생하더라도 해당 트랜잭션의 처리 결과는 저장됩니다.
간단한 이해: 트랜잭션의 모든 작업은 성공하거나 실패합니다.
5. 자물쇠란 무엇인가요?
데이터베이스는 여러 사용자가 사용하는 공유 리소스입니다. 여러 사용자가 동시에 데이터에 액세스하면 여러 트랜잭션이 동시에 데이터베이스의 동일한 데이터에 액세스합니다. 동시 작업을 제어하지 않으면 잘못된 데이터를 읽고 저장하여 데이터베이스의 일관성이 손상될 수 있습니다.
잠금은 데이터베이스 동시성 제어를 달성하는 데 매우 중요한 기술입니다. 트랜잭션이 데이터 개체에 대해 작동하기 전에 먼저 시스템에 잠금 요청을 보냅니다. 잠금 후 트랜잭션은 데이터 개체에 대한 특정 제어권을 갖게 됩니다. 트랜잭션이 잠금을 해제하기 전에는 다른 트랜잭션이 데이터 개체를 업데이트할 수 없습니다.
기본 잠금 유형: 잠금에는 행 수준 잠금과 테이블 수준 잠금이 포함됩니다.
6. 커서란 무엇입니까?
뷰는 물리적 테이블과 동일한 기능을 가진 가상 테이블입니다. 뷰는 일반적으로 하나의 테이블 또는 여러 테이블의 행이나 열의 하위 집합을 추가, 수정, 확인 및 작동할 수 있습니다. 뷰를 수정해도 기본 테이블에는 영향을 주지 않습니다. 다중 테이블 쿼리에 비해 데이터를 더 쉽게 얻을 수 있습니다.
Cursor: 쿼리 결과 집합을 단위로 효과적으로 처리합니다. 커서를 셀의 특정 행에 배치하여 결과 집합의 현재 행에서 하나 이상의 행을 검색할 수 있습니다. 결과 세트의 현재 행을 변경할 수 있습니다. 커서는 일반적으로 사용되지 않지만, 데이터를 하나씩 처리해야 할 때 커서는 매우 중요합니다.
7. 저장 프로시저란 무엇인가요? 무엇을 부르나요?
저장 프로시저는 미리 컴파일된 SQL 문으로, 모듈식 설계가 가능하다는 장점이 있습니다. 즉, 한 번만 생성하면 나중에 프로그램에서 여러 번 호출할 수 있습니다. 특정 작업에 SQL을 여러 번 실행해야 하는 경우 저장 프로시저를 사용하는 것이 간단한 SQL 문을 실행하는 것보다 빠릅니다. 명령 개체를 사용하여 저장 프로시저를 호출할 수 있습니다.
8. 인덱스의 역할은 무엇인가요? 그리고 장점과 단점은 무엇입니까?
인덱스는 데이터베이스 검색 엔진이 데이터 검색 속도를 높이기 위해 사용할 수 있는 특수 쿼리 테이블입니다. 실생활에서 책의 목차와 매우 유사합니다. 책 전체를 조회하지 않고도 원하는 데이터를 찾을 수 있습니다. 인덱스는 고유할 수 있습니다. 인덱스를 생성하면 단일 열 또는 여러 열을 지정할 수 있습니다.
단점은 데이터 입력 속도가 느려지고 데이터베이스 크기도 커진다는 것입니다.
세 가지 패러다임을 대중적인 방식으로 이해하는 방법은 무엇입니까?
첫 번째 정규형: 1NF는 속성에 대한 원자성 제약 조건으로, 속성이 원자성이고 분해될 수 없도록 요구합니다.
두 번째 정규형: 2NF는 레코드에 고유 식별자가 있어야 함을 의미합니다. , 엔터티 고유성;
세 번째 정규형: 3NF는 필드 중복성에 대한 제약 조건입니다. 즉, 어떤 필드도 다른 필드에서 파생될 수 없으며 필드가 중복되지 않아야 합니다. .
기본 테이블이란 무엇인가요? 뷰란 무엇입니까?
기본 테이블은 독립적으로 존재하는 테이블입니다. SQL에서는 관계가 테이블에 해당합니다.
뷰는 하나 이상의 기본 테이블에서 파생된 테이블입니다. 뷰 자체는 데이터베이스에 독립적으로 저장되지 않고 가상 테이블입니다
뷰의 장점을 어떻게 설명할까요?
(1) 뷰는 사용자 작업을 단순화할 수 있습니다.
(2) 뷰를 사용하면 사용자가 여러 각도에서 동일한 데이터를 볼 수 있습니다.
(3) 뷰는 데이터베이스에 대해 어느 정도의 논리적 독립성을 제공합니다. 보기는 기밀 데이터에 대한 보안 보호를 제공합니다.
NULL은 무엇을 의미하나요?NULL 값은 UNKNOWN을 나타냅니다. 즉, ""(빈 문자열)을 나타내지 않습니다.
NULL 값과 비교하면 NULL 값이 생성됩니다.
어떠한 값도 NULL 값과 비교할 수 없으며 논리적으로 답변을 기대할 수 없습니다.
NULL 판단에는 IS NULL을 사용하세요
기본 키, 외래 키, 인덱스의 차이점은 무엇인가요?
기본 키, 외래 키 및 인덱스의 차이점
정의:
기본 키 – 레코드를 고유하게 식별하고, 중복될 수 없으며, 비워 둘 수 없습니다.
외래 키 – 테이블의 외래 키가 기본 키입니다. 다른 테이블의 외래 키는 중복될 수 있으며 null 값일 수 있습니다.
Index – 이 필드에는 중복 값이 없지만 null 값이 있을 수 있습니다.
기능:
기본 키 – 데이터 무결성을 보장하는 데 사용됩니다.
외래 키 – 설정에 사용됩니다. 다른 테이블과의 연결
Index – 쿼리 정렬 속도를 높이기 위한 것입니다.
Number:
기본 키 – 기본 키는 하나만 있을 수 있습니다.
외래 키 – 테이블은 여러 개의 외래 키를 가질 수 있습니다.
인덱스 – 테이블은 여러 개의 고유 키를 가질 수 있습니다. 인덱스
테이블의 필드가 특정 범위 내의 값만 허용하도록 하려면 무엇을 사용할 수 있습니까?
이 열에 입력된 값을 제한하려면 데이터베이스 테이블에 정의된 제한 사항을 확인하세요.
SQL 문을 최적화하는 방법에는 어떤 것이 있나요? (몇개 선택)
(1) Where 절에서: Where 테이블 사이의 연결은 다른 Where 조건보다 먼저 작성되어야 하며, 최대 레코드 수를 필터링할 수 있는 조건은 Where 끝에 작성되어야 합니다. 절입니다. HAVING이 마지막입니다.
(2) IN을 EXISTS로 바꾸고 NOT IN을 NOT EXISTS로 바꿉니다.
(3) 인덱스 열에 계산 사용 방지
(4) 인덱스 열에 IS NULL 및 IS NOT NULL 사용 방지
(5) 쿼리를 최적화하려면 전체 테이블 스캔을 최대한 피해야 합니다. 먼저 고려해야 할 사항은 다음과 같습니다. where 및 order by와 관련된 열에 대한 인덱스를 만듭니다.
(6) where 절의 필드에 대해 null 값 판단을 피하십시오. 그렇지 않으면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행합니다.
(7) where 절의 필드에 표현식을 작성하지 마십시오. 이렇게 하면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행하게 됩니다.
SQL 문에서 '상관 하위 쿼리'와 '비상관 하위 쿼리'의 차이점은 무엇인가요?
(1) 상관되지 않은 하위 쿼리는 외부 쿼리와 독립적인 하위 쿼리로, 하위 쿼리는 총 한 번 실행되며, 실행 후 해당 값이 외부 쿼리로 전달됩니다.
(2) 해당 하위 쿼리의 실행은 외부 쿼리의 데이터에 따라 달라집니다. 외부 쿼리가 한 행을 실행할 때 하위 쿼리는 한 번만 실행됩니다.
상관되지 않은 하위 쿼리가 상관된 하위 쿼리보다 효율적입니다
char와 varchar의 차이점은 무엇인가요?
Char는 고정 길이 유형이고 varchar는 가변 길이 유형입니다.
차이점:
char(M) 유형의 데이터 열에서는 각 값이 M바이트를 차지합니다. 길이가 M보다 작으면 MySQL은 공백 문자를 사용하여 오른쪽을 보완합니다. (채워진 공백 문자는 검색 작업 중에 제거됩니다.)
varchar(M) 유형 데이터 열에서 각 값은 해당 길이를 기록할 수 있는 만큼의 바이트와 1바이트만 차지합니다(즉, 전체 길이는 L+1바이트입니다).
Mysql 스토리지 엔진, myisam과 innodb의 차이점.
MyISAM은 쿼리가 자주 발생하는 애플리케이션에 적합하며 교착 상태가 발생하지 않습니다. 작은 데이터 및 작은 동시성에 적합
innodb는 삽입 및 업데이트 작업이 많은 애플리케이션에 적합합니다. 적절하게 설계되면 행 잠금(가장 큰 차이점은 잠금 수준에 있음)에 적합합니다. 빅 데이터 및 대규모 동시성을 위한 것입니다.
데이터 테이블 유형은 무엇입니까?
MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV 등
MyISAM: 성숙하고 안정적이며 관리하기 쉽고 읽기 빠릅니다. 일부 기능(트랜잭션 등)은 테이블 수준 잠금을 지원하지 않습니다.
InnoDB: 트랜잭션, 외래 키 및 기타 기능, 데이터 행 잠금을 지원합니다. 많은 공간을 차지하고 전체 텍스트 색인 생성 등을 지원하지 않습니다.
MySQL 데이터베이스는 퍼블리싱 시스템의 스토리지로 사용됩니다. 하루에 50,000개 이상의 항목이 증가하면 3년 동안 운영 및 유지 관리가 필요할 것으로 예상됩니다.
(1) 데이터베이스 구조를 잘 설계하고, 부분적인 데이터 중복을 허용하고, 조인 쿼리를 피하여 효율성을 높이세요.
(2) 적절한 테이블 필드 데이터 유형과 스토리지 엔진을 선택하고 적절하게 인덱스를 추가합니다.
(3) mysql 마스터-슬레이브 복제 읽기-쓰기 분리를 수행합니다.
(4) 데이터 테이블을 테이블로 나누어 단일 테이블의 데이터 양을 줄이고 쿼리 속도를 향상시킵니다.
(5) redis, memcached 등과 같은 캐싱 메커니즘을 추가합니다.
(6) 자주 변경되지 않는 페이지에 대해 정적 페이지를 생성합니다(예: ob 캐싱).
(7) 효율적인 SQL을 작성합니다. 예를 들어 SELECT * FROM TABEL은 SELECT field_1, field_2, field_3 FROM TABLE로 변경됩니다.
트래픽이 많은 웹사이트의 경우, 페이지 방문 통계 문제를 해결하기 위해 어떤 방법을 사용하시나요?
(1) 서버가 현재 트래픽을 지원할 수 있는지 확인합니다.
(2) 데이터베이스 액세스를 최적화합니다.
(3) 사진의 핫링크 등 링크(핫링크)에 대한 외부 접근을 금지합니다.
(4) 제어 파일 다운로드.
(5) 로드 밸런싱을 수행하고 다른 호스트를 사용하여 오프로드합니다.
(6) 검색 통계 소프트웨어를 사용하여 방문 횟수를 파악하고 타겟 최적화를 수행합니다.
3. 객체지향 부분
1. 객체지향이란 무엇인가요? (이해해서 답변해주세요)
객체지향은 프로세스 지향, 즉 객체지향을 기반으로 한 개념입니다. 기능 등의 통합입니다. 객체를 통해 구현하고, 기능을 객체로 캡슐화하고, 객체가 특정 세부 사항을 구현하도록 합니다.
객체 지향에는 캡슐화, 상속, 다형성이라는 세 가지 주요 특성이 있습니다.
현재 순수 OO 언어는 주로 Java와 C#입니다. PHP와 C++도 OO를 지원합니다.
2. 비공개, 보호 및 공개 수정자의 액세스 권한을 간략하게 설명합니다.
private: 클래스 내부에서만 접근할 수 있는 비공개 멤버입니다.
protected: 보호된 멤버이며 클래스 및 상속된 클래스 내에서 액세스할 수 있습니다.
public: 공개 회원, 완전 공개, 접근 제한 없음.
3. 힙과 스택의 차이점은 무엇인가요?
스택은 컴파일 중에 할당되는 메모리 공간이므로 코드에서 스택의 크기를 명확하게 정의해야 합니다.
힙은 프로그램 실행 중에 동적으로 할당되는 메모리 공간을 기준으로 결정할 수 있습니다. 프로그램의 실행 상태 할당할 힙 메모리의 크기입니다.
4. XML과 HTML의 주요 차이점
다양한 문법 요구 사항:
(1) html에서는 대소문자를 구분하지 않고 xml에서는 엄격하게 구분합니다.
(2) HTML에서는 문맥에 단락이나 목록 키가 끝나는 위치가 명확하게 표시되는 경우
또는 유사한 닫는 태그를 생략할 수 있습니다. XML에서는 엄격한 트리 구조이므로 닫는 태그를 생략하면 안 됩니다.
(3) XML에서 일치하는 닫는 태그 없이 단일 태그가 있는 요소는 / 문자로 끝나야 합니다. 이런 식으로 파서는 닫는 태그를 찾지 않는다는 것을 알게 됩니다.
(4) XML에서는 속성 값을 따옴표로 묶어야 합니다. HTML에서 따옴표는 선택 사항입니다.
(5) HTML에서는 값 없이 속성 이름을 가질 수 있습니다. XML에서는 모든 속성에 해당 값이 있어야 합니다.
(6) XML 문서에서 공백 부분은 파서에 의해 자동으로 삭제되지 않지만 html은 공백을 필터링합니다.
태그의 차이점:
(1) html은 고유 태그를 사용하지만 xml은 고유 태그가 없습니다.
(2) HTML 태그는 사전 정의되어 있으며 XML 태그는 무료이며 사용자 정의 및 확장이 가능합니다.
다양한 기능:
(1) HTML은 데이터를 표시하는 데 사용되며 xml은 데이터를 설명하고 데이터를 저장하는 데 사용되므로 지속성 매체로 사용할 수 있습니다! HTML은 데이터와 디스플레이를 결합하고 페이지에 데이터를 표시합니다. xml은 데이터와 디스플레이를 분리합니다. XML은 데이터의 내용에 중점을 두고 데이터를 설명하도록 설계되었습니다. HTML은 데이터의 모양에 중점을 두고 데이터를 표시하도록 설계되었습니다.
(2) xml은 HTML을 대체하지 않으며, xml과 html은 용도가 다른 두 언어입니다. XML은 HTML을 대체하기 위한 것이 아닙니다. 실제로 XML은 HTML을 보완하는 것으로 볼 수 있습니다. XML과 HTML의 목표는 서로 다릅니다. HTML의 디자인 목표는 데이터를 표시하고 데이터의 모양에 중점을 두는 반면, XML의 디자인 목표는 데이터를 설명하고 데이터의 내용에 중점을 두는 것입니다.
(3) XML에 대한 가장 좋은 설명은 다음과 같습니다. XML은 정보를 처리하고 전송하기 위한 크로스 플랫폼, 소프트웨어 및 하드웨어 독립적인 도구입니다.
(4) XML은 미래에는 어디에나 있을 것입니다. XML은 데이터 처리 및 데이터 전송을 위한 가장 일반적인 도구가 될 것입니다.
5. 객체지향의 특징은 무엇인가요?
주로 캡슐화, 상속, 다형성이 있습니다. 4가지 측면인 경우 추상화를 추가합니다.
캡슐화:
캡슐화는 소프트웨어 구성 요소의 뛰어난 모듈성을 보장하는 기반입니다. 캡슐화의 목표는 소프트웨어 구성 요소의 높은 응집력과 낮은 결합을 달성하고 프로그램 상호 의존성으로 인한 변경의 영향을 방지하는 것입니다. 클래스를 정의하고 구현하는 경우 기존 클래스를 기반으로 할 수 있으며, 이 기존 클래스에서 정의한 콘텐츠를 자체 콘텐츠로 사용할 수도 있고, 새로운 콘텐츠를 추가하거나 원본 콘텐츠를 수정하여 만들 수도 있습니다. 특별한 요구에 더 적합한 것이 상속입니다. 상속은 하위 클래스가 상위 클래스 데이터와 메서드를 자동으로 공유하는 메커니즘입니다. 이는 소프트웨어의 재사용성과 확장성을 향상시키는 클래스 간의 관계입니다.
다형성:
다형성은 프로그램에서 정의된 참조 변수가 가리키는 특정 유형과 참조 변수를 통해 발행된 메소드 호출이 프로그래밍 중에 결정되는 것이 아니라 프로그램 실행 중에 결정되는 것을 의미합니다. 참조 변수 어떤 클래스 인스턴스 객체가 가리키는지, 참조 변수에 의해 실행된 메소드 호출은 프로그램 실행 중에 결정되어야 하는 클래스가 구현된 메소드입니다.
추상화:
추상화란 어떤 사물의 유사성과 공통점을 찾아 클래스로 분류하는 것입니다. 이 수업은 이러한 사물의 유사성과 공통점만 고려하고 현재 주제와 관련 없는 것은 무시하고, 이러한 측면은 현재 목표와 관련된 측면에 집중하십시오. 예를 들어, 개미와 코끼리를 보고 그들이 얼마나 비슷한지 상상할 수 있다면 그것이 추상입니다.
6. 추상 클래스와 인터페이스의 개념과 차이점은 무엇인가요?
추상 클래스: 인스턴스화할 수 없고 다른 클래스의 상위 클래스로만 사용할 수 있는 특수 클래스입니다. abstract 키워드를 사용하여 선언했습니다.
인터페이스: 특수 추상 클래스이자 인터페이스를 사용하여 선언된 특수 클래스입니다. 차이: (1) 추상 클래스의 작업은 상속 키워드 확장을 통해 구현되는 반면, 인터페이스 사용은 구현 키워드를 통해 구현됩니다. (2) 추상 클래스에는 데이터 캡슐화를 실현할 수 있는 데이터 멤버가 있지만 인터페이스에는 데이터 멤버가 없습니다.(3) 추상 클래스에는 생성자가 있을 수 있지만 인터페이스에는 생성자가 없습니다.
(4) 추상 클래스의 메서드는 private, protected 및 public 키워드를 사용하여 수정할 수 있지만(추상 메서드는 private일 수 없음), 인터페이스의 메서드는 public 키워드로만 수정할 수 있습니다.
(5) 클래스는 하나의 추상 클래스에서만 상속할 수 있으며, 클래스는 동시에 여러 인터페이스를 구현할 수 있습니다.
(6) 추상 클래스에는 멤버 메서드에 대한 구현 코드가 있을 수 있지만 인터페이스에는 멤버 메서드에 대한 구현 코드가 있을 수 없습니다.
7. 생성자는 무엇이고 소멸자는 무엇이며 그 기능은 무엇인가요?
생성자(메서드)는 객체가 생성된 후 객체가 자동으로 호출하는 첫 번째 메소드입니다. 이는 선언된 모든 클래스에 존재하며 특별한 멤버 메서드입니다. 그 기능은 일부 초기화 작업을 수행하는 것입니다. Php에서는 __construct()를 사용하여 생성자 메서드를 선언하는데 하나만 선언할 수 있습니다.
소멸자(메서드)는 생성자와 정반대입니다. 객체가 소멸되기 전에 자동으로 호출되는 마지막 메소드입니다. 파일 닫기 및 메모리 해제와 같은 객체를 파괴하기 전에 일부 특정 작업을 수행하는 데 사용되는 PHP5에 새로 추가된 콘텐츠입니다.
8. 예제를 통해 상위 클래스의 메서드를 오버로드하는 방법
오버로딩은 상위 클래스의 메서드를 재정의하는 것, 즉 하위 클래스의 메서드를 사용하여 상위 클래스에서 상속된 메서드를 대체하는 것을 의미합니다. 메소드 재정의라고도 합니다.
상위 클래스 메소드를 재정의하는 핵심은 메소드 이름, 매개변수 및 반환 값 유형을 포함하여 하위 클래스의 상위 클래스에 동일한 메소드를 생성하는 것입니다. PHP에서는 메소드 이름만 동일해야 합니다.
9. 일반적으로 사용되는 마술 방법은 무엇입니까? 예를 들어
PHP에서는 두 개의 밑줄(__)로 시작하는 메소드가 매직 메소드로 예약되어 있으므로 기존 매직 메소드를 오버로드하는 경우가 아니면 함수 이름이 __로 시작하지 않는 것이 좋습니다.
__construct()는 클래스를 인스턴스화할 때 자동으로 호출됩니다.
__destruct()는 클래스 객체가 사용될 때 자동으로 호출됩니다.
__set()은 정의되지 않은 속성에 값을 할당할 때 호출됩니다.
__get()은 정의되지 않은 속성이 호출될 때 호출됩니다.
__isset()은 isset() 또는 empty() 함수를 사용할 때 호출됩니다.
__unset()은 unset()을 사용할 때 호출됩니다.
__sleep()은 serialize를 사용하여 직렬화할 때 호출됩니다.
__wakeup()은 unserialize를 사용하여 deserialize할 때 호출됩니다.
__call()은 존재하지 않는 메서드를 호출할 때 호출됩니다.
__callStatic()이 존재하지 않는 정적 메서드를 호출합니다.
__toString()은 객체를 문자열로 변환할 때 호출됩니다. 에코와 같은.
__invoke() 객체를 메서드로 호출하려고 할 때 호출됩니다.
__set_state() var_export() 함수를 사용할 때 호출됩니다. 배열 매개변수를 허용합니다.
__clone()은 객체를 복사하기 위해 clone을 사용할 때 호출됩니다.
10. $this와 self, parent 세 개의 키워드는 각각 무엇을 의미하나요? 어떤 상황에서 사용되나요?
$이 현재 객체
자체 현재 클래스
현재 클래스의 상위 상위 클래스
$이것은 현재 클래스에서 사용됩니다. 속성과 메서드를 호출하려면 ->를 사용하세요.
self는 현재 클래스에서도 사용되는데 ::를 사용해 호출해야 합니다.
부모님은 수업에 사용됩니다.
11. 클래스에서 상수를 정의하는 방법, 클래스에서 상수를 호출하는 방법, 클래스 외부에서 상수를 호출하는 방법.
클래스에 포함된 상수도 멤버 상수입니다. 상수는 변하지 않는 수량이며 상수 값입니다.
const 키워드를 사용하여 상수를 정의하세요.
예: const PI = 3.1415326;
클래스 내부에 있든 클래스 외부에 있든 상수에 대한 액세스는 변수의 액세스와 다릅니다. ,
access 상수 형식은 클래스 이름에 호출할 범위 연산 기호(이중 콜론)를 더한 것입니다.
클래스 이름:클래스 상수 이름
12. 범위 연산자 사용 방법::? 어떤 상황에서 사용되나요?
(1) 클래스 상수 호출
(2) 정적 메서드 호출(정적으로 수정된 클래스 메서드)
13. __autoload() 메서드의 작동 원리는 무엇입니까?
이 마법 기능을 사용하기 위한 기본 조건은 클래스 파일의 파일명이 클래스 이름과 일치해야 한다는 것입니다.
특정 클래스를 인스턴스화하기 위해 프로그램을 실행할 때 인스턴스화 전에 클래스 파일이 도입되지 않으면 __autoload() 함수가 자동으로 실행됩니다.
이 함수는 인스턴스화된 클래스의 이름을 기반으로 클래스 파일의 경로를 검색합니다. 클래스 파일이 클래스 파일의 경로에 존재한다고 판단되면
는 클래스를 로드하기 위해 include 또는 require를 실행합니다. , 프로그램은 계속 실행됩니다. 이 경로에 파일이 없으면 오류 메시지가 표시됩니다.
자동 로딩 마법 기능을 사용하면 포함 또는 요구 기능을 많이 작성할 필요가 없습니다.
4. THINKPHP 부분
1. 일반적인 PHP 프레임워크
답변: thinkPHP, laravel, yii, ci 등
2. TP의 단일 항목 파일을 이해하는 방법은 무엇입니까?
ThinkPHP는 프로젝트 배포 및 액세스를 위해 단일 입구 모드를 채택합니다. 어떤 기능이 완료되든 프로젝트에는 통일된(그러나 반드시 유일한 것은 아님) 입구가 있습니다. 모든 프로젝트는 엔트리 파일에서 시작되며, 모든 프로젝트의 엔트리 파일은 유사하다고 해야 할까요.
항목 파일에는 주로 다음이 포함됩니다.
(1) 프레임워크 경로, 프로젝트 경로 및 프로젝트 이름 정의(선택)
(2) 디버깅 모드 및 실행 모드에 대한 관련 상수 정의(선택)
(3) 프레임워크 항목 파일 로드(필수)
3 , ThinkPHP의 MVC 계층화란 무엇입니까? (이해)
MVC는 애플리케이션의 논리적 계층과 프레젠테이션 계층을 분리하는 방법입니다. ThinkPHP도 MVC 디자인 패턴을 기반으로 합니다. MVC는 추상적인 개념일 뿐 특별히 명확한 규정이 없습니다. ThinkPHP의 MVC 계층화는 대략적으로 다음과 같이 반영됩니다.
Model(M): 모델의 정의는 Model 클래스로 완성됩니다.
컨트롤러(C): 애플리케이션 컨트롤러(핵심 컨트롤러 앱 클래스)와 액션 컨트롤러는 모두 컨트롤러 역할을 맡고, 애플리케이션 컨트롤러는 스케줄링 제어를 담당합니다.
View(V): View 클래스와 템플릿 파일로 구성되어 있으며 템플릿이 100% 분리되어 독립적으로 미리보기 및 제작이 가능합니다.
그러나 사실 ThinkPHP는 M이나 V에 의존하지 않습니다. 즉, 모델이나 뷰 없이도 작동할 수 있다는 뜻입니다. 심지어 C에도 의존하지 않습니다. 이는 ThinkPHP에도 애플리케이션의 전체 일정을 담당하는 앱 컨트롤러인 Action 위에 마스터 컨트롤러가 있기 때문입니다. C가 없으면 뷰 V가 존재해야 합니다. 그렇지 않으면 더 이상 완전한 애플리케이션이 아닙니다.
간단히 말하면 ThinkPHP의 MVC 모델은 MVC 자체를 고수하기보다는 민첩한 개발 수단만을 제공합니다.
4. SQL을 최적화하는 방법은 무엇입니까? (학생들은 다음 설명을 이해한 후 자신의 이해에 따라 일반적인 의미를 진술할 수 있습니다.)
(1) 올바른 스토리지 엔진 선택
MyISAM은 많은 수의 쿼리가 필요한 일부 애플리케이션에 적합합니다. 하지만 글을 많이 쓰는 것은 좋지 않습니다. 필드만 업데이트해도 테이블 전체가 잠기며 읽기 작업이 완료될 때까지 다른 프로세스, 심지어 읽기 프로세스도 작동할 수 없습니다. 또한 MyISAM은 SELECT COUNT(*)와 같은 계산 속도가 매우 빠릅니다.
InnoDB의 추세는 매우 복잡한 스토리지 엔진이 될 것이며 일부 소규모 애플리케이션의 경우 MyISAM보다 느릴 것입니다. 그러나 "행 잠금"을 지원하므로 쓰기 작업이 많을 때 더 좋습니다. 또한 트랜잭션과 같은 고급 애플리케이션도 지원합니다.
(2) 필드의 데이터 유형 최적화
열이 작을수록 속도가 빨라진다는 원칙을 기억하세요. 테이블에 몇 개의 열(예: 사전 테이블, 구성 테이블)만 있는 경우 INT를 기본 키로 사용할 이유가 없습니다. MEDIUMINT, SMALLINT 또는 더 작은 TINYINT를 사용하는 것이 더 경제적입니다. 시간을 추적할 필요가 없다면 DATETIME보다 DATE를 사용하는 것이 훨씬 좋습니다. 물론 확장을 위한 충분한 공간도 확보해야 합니다.
(3) 검색 필드에 인덱스 추가
인덱스가 반드시 기본 키나 유일한 필드를 의미하는 것은 아닙니다. 테이블에 항상 검색에 사용할 필드가 있는 경우 해당 필드를 인덱싱하는 것이 가장 좋습니다. 검색하려는 필드가 큰 텍스트 필드가 아닌 경우 전체 텍스트 인덱스를 만들어야 합니다.
(4) Select 사용을 피하세요. 데이터베이스에서 읽어오는 데이터가 많을수록 쿼리 속도가 느려집니다. 또한 데이터베이스 서버와 웹 서버가 두 개의 독립된 서버인 경우 네트워크 전송 부하도 증가합니다. 데이터 테이블의 모든 필드를 쿼리하려는 경우에도 와일드카드를 사용하지 않는 것이 좋습니다. 내장된 필드 제외 정의를 잘 활용하면 더 편리할 수 있습니다.
(5) VARCHARENUM 대신 ENUM을 사용하면 매우 빠르고 컴팩트합니다. 실제로는 TINYINT를 보유하지만 문자열로 나타납니다. 이런 식으로 이 필드를 사용하여 선택 목록을 만드는 것이 매우 완벽해집니다. 예를 들어 성별, 민족, 부서, 상태 등 필드의 값이 제한되어 고정되어 있는 경우 VARCHAR 대신 ENUM을 사용해야 합니다.
(6) 가능할 때마다 NOT NULL을 사용하세요.NULL 값을 사용해야 하는 특별한 이유가 없는 한 필드를 항상 NOT NULL로 유지해야 합니다. NULL에는 실제로 추가 공간이 필요하며 비교를 수행하면 프로그램이 더 복잡해집니다. 물론 이것이 NULL을 사용할 수 없다는 의미는 아닙니다. 현실은 매우 복잡하며 여전히 NULL 값을 사용해야 하는 상황이 있을 것입니다.
(7) 고정 길이 테이블이 더 빨라집니다테이블의 모든 필드가 "고정 길이"인 경우 전체 테이블이 "정적" 또는 "고정 길이"로 간주됩니다. 예를 들어 테이블에는 VARCHAR, TEXT, BLOB 유형의 필드가 없습니다. 이러한 필드 중 하나를 포함하는 한 테이블은 더 이상 "고정 길이 정적 테이블"이 아니며 MySQL 엔진은 이를 다른 방식으로 처리합니다.
고정 길이 테이블은 MySQL이 더 빠르게 검색하므로 성능이 향상됩니다. 이러한 고정 길이를 사용하면 다음 데이터의 오프셋을 쉽게 계산할 수 있으므로 자연스럽게 읽는 속도도 빨라집니다. 그리고 필드의 길이가 고정되어 있지 않으면 다음 필드를 찾으려고 할 때마다 프로그램이 기본 키를 찾아야 합니다.
또한 고정 길이 테이블은 캐시하고 다시 작성하기가 더 쉽습니다. 그러나 유일한 부작용은 고정 길이 필드가 일부 공간을 낭비한다는 것입니다. 고정 길이 필드는 사용 여부에 관계없이 너무 많은 공간을 필요로 하기 때문입니다.
5. ThinkPHP 3.0 아키텍처(코어 + 동작 + 드라이버)의 동작을 이해하는 방법은 무엇입니까?
(1) Core: 프레임워크의 핵심 코드이며, 없어서는 안되는 것입니다. TP 자체가 MVC 아이디어를 기반으로 개발된 프레임워크입니다.
(2) 동작: 동작은 ThinkPHP 새 버전의 아키텍처에서 결정적인 역할을 합니다. 시스템의 핵심에는 많은 태그 확장 비트가 있으며 각 태그 위치는 차례로 자체 독립적인 동작을 실행할 수 있습니다. 이것이 행동 확장이 탄생한 방식이며, 많은 시스템 기능도 내장된 행동 확장을 통해 완성되며, 모든 행동 확장은 교체 가능하고 추가되어 기본 프레임워크 조립의 기반을 형성합니다.
(3) 드라이버: 데이터베이스 드라이버, 캐시 드라이버, 태그 라이브러리 드라이버, 템플릿 엔진 드라이버 및 외부 클래스 확장.
6. 기존 구성은 무엇인가요?
소위 기존 구성은 프레임워크와 함께 제공되는 구성 파일입니다. 이 파일은 핵심 프레임워크 디렉터리의 Convention.php에 있으며, 구성 내용은 다음과 같습니다. 이 파일은 프레임워크와 함께 제공되는 구성 파일이므로 실제 개발 프로세스에서 주로 참조 예제로 사용됩니다. 이 파일의 구성 내용을 거의 수정하지 않으며 필요에 따라 필드를 구성하는 경우가 더 많습니다. 규칙에 따라 모듈 또는 공통의 구성 내용을 사용자 정의하기 위한 정의 및 주석.
7. SQL 인젝션이란? (이해)
SQL 주입 공격은 해커가 데이터베이스를 공격하기 위해 사용하는 일반적인 방법 중 하나입니다.
일부 프로그래머는 코드를 작성할 때 사용자 입력 데이터의 적법성을 판단하지 않습니다. 인젝터는 양식에 데이터베이스 쿼리 코드를 입력하고 이를 제출할 수 있습니다. 프로그램은 제출된 정보를 종합하여 완전한 SQL 문을 생성하고 서버는 악의적인 SQL 명령을 실행하도록 속일 것입니다. 인젝터는 프로그램이 반환한 결과를 바탕으로 일부 민감한 데이터를 성공적으로 획득하고 심지어 전체 서버를 제어합니다. 이것이 바로 SQL 인젝션입니다.
8. ThinkPHP는 SQL 주입을 어떻게 방지하나요? (이해)
(1) 쿼리 조건에 배열을 사용하는 것이 더 안전한 방법입니다.
(2) 문자열 쿼리 조건을 사용해야 하는 경우 전처리 메커니즘을 사용하세요.
(3) 바인딩 정의를 사용하세요. 매개변수
(4) 데이터 필드 유형 확인을 켜면 숫자 데이터 유형을 강제로 변환할 수 있습니다. (필드 유형 확인은 버전 3.1부터 필수입니다.)
(5) 자동 확인 및 자동 완성 메커니즘을 사용하여 애플리케이션을 수행합니다. 특정 검증 사용자 정의 필터링
(6) 악의적인 데이터 입력을 방지하기 위해 필드 유형 확인, 자동 검증 및 자동 완성 메커니즘을 사용합니다.
9. 디버깅 모드를 활성화하는 방법은 무엇입니까? 디버그 모드의 이점은 무엇입니까?
디버깅 모드 활성화는 매우 간단합니다. 항목 파일에 상수 정의 코드 한 줄만 추가하면 됩니다.
// 디버깅 모드를 활성화하려면 개발 단계에서 배포 단계 주석을 활성화하거나 설정하는 것이 좋습니다. to false
define('APP_DEBUG', true);
디버깅 모드의 장점은 다음과 같습니다. 로깅이 켜져 있으면 오류 정보와 디버깅 정보가 자세히 기록되어 디버깅이 용이해집니다. SQL 분석을 용이하게 하기 위해 SQL 로그가 기록됩니다. 필드 캐싱이 꺼지면 데이터 테이블 필드를 수정할 수 없습니다. 캐시의 영향을 받습니다. Linux 배포 문제를 감지하는 데 도움이 됩니다. 사전 개발, 테스트, 데모 및 기타 필요한 상황을 포함한 개발 프로세스의 다양한 단계에서 쉽게 사용할 수 있으며 다양한 애플리케이션 모드 독립적인 프로젝트 구성 파일을 구성할 수 있습니다.
10. TP에서는 어떤 구성 모드가 지원되나요? 우선 사항?
기존 구성->애플리케이션 구성->모드 구성->디버그 구성->상태 구성->모듈 구성->확장 구성->동적 구성
위는 로딩 순서입니다. 후속 구성은 동일한 이름으로 이전 구성을 덮어쓰므로(적용되지 않는 경우) 우선 순위는 오른쪽에서 왼쪽입니다.
11. TP의 URL 패턴은 무엇인가요? 기본값은 무엇입니까?
ThinkPHP는 일반 모드, PATHINFO, REWRITE 및 호환성 모드를 포함하여 URL_MODEL 매개변수를 설정하여 정의할 수 있는 네 가지 URL 모드를 지원합니다.
기본 모드는 PATHINFO 모드입니다. URL_MODEL을 1
12로 설정하세요. TP의 시스템 변수는 무엇인가요? 시스템 변수를 얻는 방법은 무엇입니까?
(1) 시스템 변수: _REQUEST、{
위 내용은 2021 PHP 면접 질문 모음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!