PHP 면접 주요 질문 공유 (1)

小云云
풀어 주다: 2023-03-22 06:06:01
원래의
1649명이 탐색했습니다.

이 기사에서는 주로 PHP에 관한 몇 가지 인터뷰 질문을 공유합니다. 이러한 PHP 인터뷰 질문이 도움이 되기를 바랍니다.

1. PHP 언어의 주요 장점 중 하나는 크로스 플랫폼입니다.

PHP 실행 환경의 최적 조합은 Apache+MySQL+PHP입니다. 이 실행 환경은 다양한 운영체제(예: Windows, Linux 등)에서 구성할 수 있으며 운영체제에 의해 제한되지 않으므로 호출됩니다. cross-platform

2. WEB 개발 시 데이터 제출 방법은 몇 가지가 있나요? 차이점은 무엇입니까? Baidu는 어떤 방법을 사용하나요?

Get과 post는 두 가지 방법입니다

차이점: 1. Get은 서버에서 데이터를 얻고 post는 서버로 데이터를 전송합니다

2 Get으로 전달된 값은 URL에 표시되고 post로 전달된 값은 다음과 같습니다. url

4.Get에서 전달되는 값은 일반적으로 2KB 이내이며, post 값 크기는 php.ini에서 설정할 수 있습니다.

5. Get 보안이 낮지 않고 사후 보안이 높지만 실행 효율성이 높습니다. Post보다

권장 사항:

1. 보안이 Post 방식보다 좋지 않습니다. 기밀 정보가 포함된 경우 Post 데이터 제출 방식을 사용하는 것이 좋습니다. 2. Get 방식을 사용하는 것이 좋습니다. 데이터 쿼리의 경우 데이터를 추가, 수정 또는 삭제하려면 Post 메서드를 사용하는 것이 좋습니다.

Baidu에서 사용하는 get 메서드는 해당 URL에서 볼 수 있기 때문입니다

3. etc. of PHP

Framework: zendframe, CI, Yii 등 많은 프레임워크가 있습니다. 우리가 배운 것은 thinkphp

template 엔진입니다. 교과서에서 우리가 배운 것은 smart

입니다. 시스템: Kangsheng의 제품(uchome, supesite, discuzX 등), Empire 시스템, DEDE(Dream Weaver), ecshop 등이 있습니다. 우리가 배운 것은 DEDECMS 및 Ecshop

4입니다. 당신이 마스터한 웹 프론트 엔드 기술은 무엇입니까?

p+CSS 웹 페이지 레이아웃, JavaScript, jQuery 프레임워크, 포토샵 이미지 처리에 능숙

5. AJAX의 장점은 무엇인가요?

ajax는 부분 새로 고침을 달성하기 위해 javascript 또는 JQuery 프레임워크를 통해 구현할 수 있는 비동기 전송 기술로, 서버에 대한 부담을 줄이고 사용자 경험을 향상시킵니다.

6. 보안이 프로그램에 중요한 이유를 알려주세요. 개발 중에 보안 메커니즘에 주의를 기울여야 합니까?

①원격 제출 방지, ②SQL 삽입 방지 및 특수 코드 필터링, ③등록 기계 플러딩 방지 및 인증 코드 사용

7. 프로그램 개발 시 어떻게 하면 프로그램의 운영 효율성을 높일 수 있나요?

① SQL 문을 최적화하고, 어떤 필드를 사용하여 하위 쿼리를 덜 사용하고 퍼지 쿼리를 덜 사용하세요. 자주 사용하는 프로그램 수신된 데이터는 캐시됩니다.

8. PHP를 다른 데이터베이스와 함께 사용할 수 있나요?

PHP는 MYSQL 데이터베이스와의 최고의 조합입니다. 물론, PHP는 MSSQL 등 다른 데이터베이스와도 사용할 수 있습니다. PHP에는 MSSQL 운영을 위한 기능이 예약되어 있어 켜져 있는 동안만 사용할 수 있습니다. 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 문자열 형식의 문자열입니다. assoc 이 매개변수가 TRUE이면 객체 대신 배열을 반환합니다.

Json_encode: PHP 변수를 json 형식으로 변환

14. PHP에서 배열을 처리하는 일반적인 함수는 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

①array()는 배열을 생성합니다. ②count()는 배열의 요소 수를 반환합니다. ③array_push()는 하나 이상의 요소를 배열의 끝에 삽입합니다. array (push); ④array_column()은 입력 배열의 단일 열 값을 반환합니다. ⑤array_combine()은 두 배열을 병합하여 새 배열을 생성합니다. ⑥array_reverse()는 배열을 역순으로 반환합니다. in the array; ⑧in_array( ) 지정된 값이 배열에 있는지 확인합니다.

15 PHP에서 문자열을 처리하는 일반적인 함수는 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

①trim()은 문자열 양쪽에서 공백 문자와 기타 문자를 제거합니다. ②substr_replace()는 문자열의 일부를 다른 문자열로 대체합니다. ③substr_count()는 문자열에 하위 문자열이 나타나는 횟수를 계산합니다. ④substr()은 문자열의 일부를 반환합니다. ⑤strtolower()는 문자열을 대문자로 변환합니다. ⑦strtr()은 문자열에서 특정 문자를 찾습니다. 다른 문자열에서 문자열이 처음 나타나는 경우(대소문자 구분), strrev()는 문자열의 길이를 반환합니다. str_replace()는 문자열의 일부 문자를 바꿉니다(대소문자 구분). 하나 이상의 문자열을 출력합니다;explore()는 문자열을 배열로 나눕니다. is_string()은 변수가 문자열인지 여부를 감지합니다. 그리고 영문자

16. PHP 처리 시간에 흔히 사용되는 함수는 무엇인가요? (함수의 '매개변수'와 '반환값'에 집중하세요)

date_default_timezone_get()은 기본 시간대를 반환합니다.

date_default_timezone_set()은 기본 시간대를 설정합니다.

date()는 현지 시간/날짜 형식을 지정합니다.

getdate()는 날짜/시간 정보를 반환합니다.

gettimeofday()는 현재 시간 정보를 반환합니다.

microtime()은 현재 시간의 마이크로초 수를 반환합니다.

mktime()은 날짜의 Unix 타임스탬프를 반환합니다.

strtotime()은 영어 텍스트 날짜 또는 시간 설명을 Unix 타임스탬프로 구문 분석합니다.

time()은 현재 시간의 Unix 타임스탬프를 반환합니다.

17. PHP에서 데이터베이스를 처리하는 데 사용되는 일반적인 기능은 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

PHP 매뉴얼을 참고해서 주의 깊게 읽어주세요. 이것은 매우 중요합니다

18. PHP에서 파일을 조작하는데 일반적으로 사용되는 함수는 무엇인가요? (함수의 '매개변수' 및 '반환 값'에 중점을 둡니다.)

①파일 열기, ③파일 읽기, ⑤파일 수정, ⑦파일 만들기 등. 직장에서 캐시나 정적 파일을 생성하는 데 자주 사용됩니다. PHP 설명서를 참조하여 주의 깊게 확인하세요

19. PHP 운영 디렉터리(폴더)의 일반적인 기능은 무엇인가요? (함수의 '매개변수'와 '반환값'에 초점을 맞춥니다.)

①디렉터리 열기, ②디렉토리 삭제, ③디렉터리 읽기, ⑤디렉터리 수정, 등등. 작업할 때 업로드된 파일에 대한 디렉터리를 생성하거나 삭제하는 경우, 캐시 및 정적 페이지에 대한 디렉터리를 생성하거나 삭제하는 데 사용되는 경우가 많습니다. PHP 매뉴얼을 참고하여 주의 깊게 읽어보시기 바랍니다

3. 객체지향 부분

1. -지향? (이해한 후 답변)

답변: 객체지향 OO = 객체지향 분석 OOA + 객체지향 설계 OOD + 객체지향 프로그래밍 OOP라는 것이 대중적인 설명입니다. 독립된 개체(단위)로 간주되기 때문에 C처럼 여러 기능으로 나누어지는 것이 아니라 스스로 자신의 기능을 완성할 수 있습니다.

현재 순수 OO 언어는 주로 Java와 C#입니다. PHP와 C++도 OO를 지원합니다.​​

2. private, protected, public 한정자의 접근권한을 간략하게 설명합니다.

답변: private: Private 멤버는 클래스 내부에서만 접근할 수 있습니다.

protected: 보호된 멤버이며 클래스 및 상속된 클래스 내에서 액세스할 수 있습니다.

public: 공개 회원, 완전 공개, 접근 제한 없음.

3. 힙과 스택의 차이점은 무엇인가요?

답변: 스택은 컴파일 중에 할당되는 메모리 공간이므로 코드에서 스택 크기를 명확하게 정의해야 합니다.

힙은 프로그램 실행 중에 동적으로 할당되는 메모리 공간입니다. 프로그램의 실행 상태에 따라 할당할 힙 메모리의 크기를 결정합니다.

4. XML과 HTML의 주요 차이점

답변: (1) XML은 대문자와 소문자를 구분하지만 HTML은 그렇지 않습니다.

(2) HTML에서는 문맥에 단락이나 목록 키가 끝나는 위치가 명확하게 표시되는 경우

또는 와 같은 닫는 태그를 생략할 수 있습니다. XML에서는 닫는 태그를 생략하면 안 됩니다.

(3) XML에서 일치하는 닫는 태그 없이 단일 태그가 있는 요소는 / 문자로 끝나야 합니다. 이렇게 하면 파서는 닫는 태그를 찾지 않는다는 것을 알게 됩니다.

(4) XML에서는 속성 값을 따옴표로 묶어야 합니다. HTML에서 따옴표는 선택 사항입니다.

(5) HTML에서는 값 없이 속성 이름을 가질 수 있습니다. XML에서는 모든 속성에 해당 값이 있어야 합니다.

5. 객체지향의 특징은 무엇인가요?

답변: 주로 캡슐화, 상속, 다형성이 있습니다. 4가지 측면인 경우 추상화를 추가합니다.

다음 설명은 이해를 돕기 위한 것입니다.

캡슐화:

캡슐화는 소프트웨어 구성 요소가 뛰어난 모듈성을 갖도록 보장하는 기반입니다. 캡슐화의 목표는 소프트웨어 구성 요소의 높은 응집력과 낮은 결합을 달성하여 프로그램의 상호 의존성을 방지하는 것입니다. 다가오는 변경 사항.

상속:

클래스를 정의하고 구현할 때 기존 클래스를 기반으로 할 수 있으며, 이 기존 클래스에서 정의한 콘텐츠를 자신의 콘텐츠로 사용할 수 있으며, 새로운 콘텐츠를 추가하거나 원본 콘텐츠를 수정할 수 있습니다. 특별한 요구에 더 적합하게 만드는 것이 상속입니다. 상속은 하위 클래스가 상위 클래스 데이터와 메서드를 자동으로 공유하는 메커니즘입니다. 이는 소프트웨어의 재사용성과 확장성을 향상시키는 클래스 간의 관계입니다.

다형성:

다형성은 프로그램에서 정의된 참조 변수가 가리키는 특정 유형과 참조 변수를 통해 발행되는 메소드 호출이 프로그래밍 중에 결정되는 것이 아니라 프로그램 실행 중에 결정된다는 것을 의미합니다. 참조 변수가 가리키는 클래스 인스턴스 개체와 참조 변수가 발행한 메서드 호출을 구현하는 클래스는 프로그램 실행 중에 결정되어야 합니다.

추상화:

추상화란 어떤 사물의 유사성과 공통점을 찾아 클래스로 분류하는 것입니다. 이 수업은 이러한 사물의 유사성과 공통점만 고려하고 현재 주제와 관련 없는 것은 무시합니다. 현재 목표와 관련된 측면에 집중하세요. 예를 들어, 개미와 코끼리를 보고 그들이 얼마나 비슷한지 상상할 수 있다면 그것이 추상입니다.

6. 추상 클래스와 인터페이스의 개념과 차이점은 무엇인가요?

답변: 추상 클래스: 인스턴스화할 수 없고 다른 클래스의 상위 클래스로만 사용할 수 있는 특수 클래스입니다. abstract 키워드를 사용하여 선언했습니다.

특수 추상 클래스이자 인터페이스 선언을 사용하는 특수 클래스입니다.

(1) 추상 클래스의 작업은 상속 키워드 확장을 통해 구현되고, 인터페이스 사용은 Implements 키워드를 통해 구현됩니다.

(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 세 개의 키워드는 각각 무엇을 의미하나요? 어떤 상황에서 사용되나요?

답변: $this 현재 객체

자체 현재 클래스

현재 클래스의 상위 부모 클래스

$this는 현재 클래스에서 사용됩니다. 속성과 메서드를 호출하려면 ->를 사용하세요.

self는 현재 클래스에서도 사용되는데 ::를 사용해 호출해야 합니다.

부모님은 수업에 사용됩니다.

11. 클래스에서 상수를 정의하는 방법, 클래스에서 상수를 호출하는 방법, 클래스 외부에서 상수를 호출하는 방법.

답변: 클래스의 상수도 멤버 상수입니다. 상수는 변하지 않는 수량이며 상수 값입니다.

const 키워드를 사용하여 상수를 정의하세요.

예: const PI = 3.1415326;

클래스 내부에 있든 클래스 외부에 있든 상수에 대한 액세스는 변수의 액세스와 다릅니다.

상수에 액세스하는 형식은 다음과 같습니다. 클래스 이름에 호출할 범위 작업 기호(이중 콜론)를 더합니다.

즉: 클래스 이름:: 클래스 상수 이름

12. 범위 연산자 사용 방법::? 어떤 상황에서 사용되나요?

답변: 클래스 상수 호출

정적 메소드 호출

13. __autoload() 메소드의 작동 원리는 무엇입니까?

답변: 이 마법 기능을 사용하기 위한 기본 조건은 클래스 파일의 파일 이름이 클래스 이름과 일치해야 한다는 것입니다.

특정 클래스를 인스턴스화하기 위해 프로그램을 실행할 때 인스턴스화 전에 클래스 파일이 도입되지 않으면 __autoload() 함수가 자동으로 실행됩니다.

이 함수는 인스턴스화된 클래스의 이름을 기반으로 클래스 파일의 경로를 검색합니다. 클래스 파일이 클래스 파일의 경로에 존재한다고 판단되면

는 클래스를 로드하기 위해 include 또는 require를 실행합니다. , 프로그램은 계속 실행됩니다. 이 경로에 파일이 없으면 오류 메시지가 표시됩니다.

자동 로딩 마법 기능을 사용하면 포함 또는 요구 기능을 많이 작성할 필요가 없습니다.

4. ThinkPHP 부분

1. 일반적인 PHP 프레임워크

답변: thinkPHP

yii

ZendFramework

CakePhp

sy

2.

답변: ThinkPHP는 프로젝트 배포 및 액세스를 위해 단일 입구 모드를 채택합니다. 어떤 기능이 완료되든 프로젝트에는 통일된(그러나 반드시 유일한 것은 아님) 입구가 있습니다. 모든 프로젝트는 엔트리 파일에서 시작하고 모든 프로젝트의 엔트리 파일은 유사하다고 해야 합니다. 엔트리 파일에는 주로 다음이 포함됩니다.

프레임워크 경로, 프로젝트 경로 및 프로젝트 이름 정의(선택 사항)

디버깅 모드 정의 및 실행 모드 관련 상수(선택 사항)

프레임워크 항목 파일 로드(필수)

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 자체를 고수하기보다는 민첩한 개발 수단만을 제공합니다.

5. ThinkPHP 3.0 아키텍처 3(코어 + 동작 + 드라이버)의 동작을 이해하는 방법은 무엇입니까?

답변: Core + Behavior + Driver

TP의 공식 약어는 CBD

Core: 프레임워크의 핵심 코드이며, 없어서는 안될 TP 자체가 MVC 아이디어를 기반으로 개발된 프레임워크입니다.

동작: 동작은 ThinkPHP 새 버전의 아키텍처에서 결정적인 역할을 합니다. 시스템 코어 위에는 많은 태그 확장 비트가 있으며 각 태그 위치는 차례로 고유한 동작을 실행할 수 있습니다. 이것이 행동 확장이 탄생한 방식이며, 많은 시스템 기능도 내장된 행동 확장을 통해 완성되며, 모든 행동 확장은 교체 가능하고 추가되어 기본 프레임워크 조립의 기반을 형성합니다.

드라이버: 데이터베이스 드라이버, 캐시 드라이버, 태그 라이브러리 드라이버, 템플릿 엔진 드라이버 및 외부 클래스 확장.

프레임워크. 실제로 이는 특정 응용 프로그램의 반제품이며, 자신의 시스템을 완성하기 위해 선택하고 사용할 수 있는 구성 요소 집합입니다. 쉽게 말하면 남들이 만들어 놓은 무대를 이용해서 퍼포먼스를 하는 거죠. 게다가 프레임워크는 일반적으로 성숙하고 지속적으로 업그레이드되는 소프트웨어입니다.

6. 기존 구성은 무엇인가요?

답변: 기존 구성 이전 페이지 다음 페이지 규칙은 시스템이 따르는 중요한 아이디어입니다(시스템 디렉토리 아래에 있는 Confconvention.php). 대부분의 용도에 맞게 설정됩니다. 따라서 애플리케이션 프로젝트의 구성 파일의 경우 기존 구성과 다르거나 새로운 구성 매개변수만 구성하면 되는 경우가 많습니다. 기본 구성을 완전히 채택하면 구성 파일을 정의할 필요도 없습니다.

기존 구성 파일은 시스템에 의해 자동으로 로드되므로 프로젝트에 로드할 필요가 없습니다.

7. SQL 인젝션이란? (이해)

답변: SQL 주입 공격은 해커가 데이터베이스를 공격하기 위해 사용하는 일반적인 수단 중 하나입니다. 일부 프로그래머는 코드를 작성할 때 사용자 입력 데이터의 적법성을 판단하지 않습니다. 인젝터는 양식에 데이터베이스 쿼리 코드를 입력하고 이를 제출할 수 있습니다. 프로그램은 제출된 정보를 모아 완전한 SQL 문을 생성하며 서버는 악성 SQL 명령을 실행합니다. 인젝터는 프로그램이 반환한 결과를 바탕으로 일부 민감한 데이터를 성공적으로 획득하고 심지어 전체 서버를 제어합니다. 이것이 바로 SQL 인젝션입니다.

8. ThinkPHP는 SQL 주입을 어떻게 방지하나요? (이해)

답변: (1) 쿼리 조건에 배열을 사용하는 것이 더 안전한 방법입니다.

(2) 문자열 쿼리 조건을 최후의 수단으로 사용해야 하는 경우 전처리 메커니즘을 사용하세요.

(3) ) 데이터 필드 유형 확인을 활성화하면 숫자 데이터 유형을 강제로 변환할 수 있습니다. (필드 유형 확인은 버전 3.1부터 필수입니다.)

(4) 자동 확인 및 자동 완성 메커니즘을 사용하여 애플리케이션에 대한 사용자 정의 필터링을 수행합니다.

(5 ) 악의적인 데이터 입력을 방지하기 위해 필드 유형 확인, 자동 유효성 검사 및 자동 완성 메커니즘을 사용합니다.

9. 디버깅 모드를 활성화하는 방법은 무엇입니까? 디버그 모드의 이점은 무엇입니까?

답변: 디버깅 모드를 켜는 것은 매우 간단합니다. 항목 파일에 상수 정의 코드 한 줄만 추가하면 됩니다.

//디버깅 모드 켜기

정의('APP_DEBUG) ', true);

//프레임워크 항목 파일 로드

require './ThinkPHP/ThinkPHP.php';

개발 단계를 완료하고 프로덕션 환경에 배포한 후에는 디버그 모드 정의만 삭제하면 됩니다. 배포 모드로 전환하는 코드입니다. 디버깅 모드를 켜면 시스템은 먼저 시스템의 기본 디버깅 구성 파일을 로드한 다음 프로젝트의 디버깅 구성 파일을 로드합니다. 디버깅 모드의 장점은 다음과 같습니다.

로깅을 켜면 오류 정보와 디버깅 정보가 표시됩니다.

템플릿 캐싱을 끄면 템플릿 수정 사항이 즉시 적용됩니다.

SQL 로그를 기록하여 SQL 분석을 용이하게 합니다.

필드 캐싱을 끄면 데이터 테이블 필드 수정이 영향을 받지 않습니다. 캐싱;

파일 케이스를 엄격하게 확인(Windows 플랫폼에서도)하여 Linux 배포 문제를 미리 발견할 수 있습니다.

개발, 테스트, 데모 및 기타 필요한 상황을 포함하여 개발 프로세스의 다양한 단계에서 편리하게 사용할 수 있습니다. 독립적인 프로젝트 구성 파일을 사용하여 다양한 애플리케이션 모드를 구성할 수 있습니다.

10. TP에서는 어떤 구성 모드가 지원되나요? 우선 사항?

답변: ThinkPHP는 프로젝트 구성에서 고유한 계층적 구성 모드를 만들었습니다. 해당 구성 수준은

기존 구성->프로젝트 구성->디버그 구성->그룹 구성->확장 구성 ->에 반영됩니다. ;동적 구성

위는 구성 파일의 로드 순서입니다. 이후 구성은 동일한 이름으로 이전 구성을 덮어쓰므로(효과적이지 않은 경우) 우선 순위는 오른쪽에서 왼쪽입니다.

11. TP의 URL 패턴은 무엇인가요? 기본값은 무엇입니까?

답변: ThinkPHP는 일반 모드, PATHINFO, REWRITE 및 호환성 모드를 포함하여 URL_MODEL 매개변수를 설정하여 정의할 수 있는 4가지 URL 모드를 지원합니다.

기본 모드는 PATHINFO 모드입니다. URL_MODEL을 1

12로 설정하세요. TP의 시스템 변수는 무엇인가요? 시스템 변수를 얻는 방법은 무엇입니까?

답변: 시스템 변수를 얻는 방법:

Action에서 다음 메서드를 호출하면 됩니다.

$this->메서드 이름 ("변수 이름", ["필터 메서드"], ["기본값" ] )

13. ThinkPHP 프레임워크에서 D 함수와 M 함수의 차이점은 무엇인가요?

답변: M 메서드는 사용자가 각 데이터 테이블에 대한 모델 클래스를 정의하지 않고도 모델을 인스턴스화합니다. D 메서드는 사용자 정의 모델 클래스가 있는 경우 자동으로 모델 클래스를 감지할 수 있습니다. 존재하지 않으면 자동으로 M 메서드를 호출하여 Model 기본 클래스를 인스턴스화합니다. 동시에 인스턴스화된 모델은 반복적으로 인스턴스화되지 않습니다(단일 사례 모드).

위로

5. 똑똑한 템플릿 엔진

1. 컴파일과 캐싱의 차이점은 무엇인가요?

smarty의 컴파일 과정은 템플릿을 가져와 내부의 태그를 해당 PHP 코드로 바꾸는 것입니다. 이는 실제로 php와 html을 혼합하는 과정입니다.

smarty의 캐시입니다. 수동으로 켜야 합니다, 똑똑하게 캐시는 컴파일된 파일을 실행하는 동시에 정적 html 페이지를 생성하는 것입니다. 다시 액세스하면 html 파일에 액세스하게 되므로 효율성 측면에서 더 높습니다

2. 스마티란 무엇인가요? 스마티의 장점은 무엇인가요?

스마티는 PHP로 작성된 PHP 템플릿 엔진으로, 프로그래머가 논리적인 내용을 변경할 수 있도록 하기 위한 것입니다. 디자이너와 아티스트는 페이지를 다시 수정할 때 프로그램의 프로그램 로직에 영향을 주지 않습니다. 이는 다중 사용자 공동 작업 프로젝트에서 특히 중요합니다. (멀티스타일 프로그램 개발도 쉽습니다.)

Smarty의 장점

1. 빠른 속도: 다른 템플릿 엔진에 비해.

2. 컴파일된 유형: smarty를 사용하여 작성된 프로그램은 런타임 시 비템플릿 기술 PHP 파일로 컴파일되어야 합니다.

3 캐싱 기술: 사용자가 최종적으로 보는 HTML 파일을 정적 HTML 페이지로 캐시할 수 있습니다.

4 플러그인 기술: smarty는 플러그인을 사용자 정의할 수 있습니다.

smarty

1. 실시간 업데이트가 필요한 콘텐츠입니다. 예를 들어, 재고 표시와 같이 빈번한 데이터 업데이트가 필요합니다. 2. 소규모 프로젝트. 단순성 때문에 아티스트와 프로그래머가 모두 필요한 소규모 프로젝트

3. 템플릿에 변수를 유지하려면 {$smarty}를 사용하세요

{$smarty.get.page} //$_GET[page]

{smarty.cookies.}

{smarty.post에 액세스하는 것과 유사합니다.}

{smarty.session.}

{smarty.server.}

4. 템플릿에서 PHP의 변수에 액세스합니다.

PHP 스크립트에는 두 가지 유형의 시스템 상수와 사용자 정의 상수가 있습니다. Smarty 템플릿에 포함되어 있으며 PHP에서 할당할 필요가 없습니다. 변수가 {$smarty}를 통해 유지되는 한 상수의 값을 직접 출력할 수 있습니다. 템플릿에서 상수 출력의 예:

{$smarty.const.__FILE__}

5. 변수 수정자

{$var|modifier1|modifier2|.. .....}

<{$str}>

<{$str|capitalize}><{*첫 글자는 대문자입니다*}>

<{$str|upper}><{*모두 대문자*}>

<{$str|lower}><{*모두 소문자*}>< ; br>

<{$str|lower|upper}><{*모두 대문자, 왼쪽에서 오른쪽으로 조정됨*}>

<{$leg|truncate}>< ; {*문자열 차단, 기본값 80자*}>

<{$leg|truncate:10}><{*문자열 차단, 처음 10자(...3자 포함) *} >

6. PHP가 mysql 데이터베이스를 쿼리할 때 중국어 결과를 쿼리할 때 잘못된 문자가 나타납니다. 어떻게 해결하나요? ? ? ?

1. 파일 속성(다른 이름으로 저장)

2. 파일 메타(브라우저 파싱 설정 시)

3. 데이터베이스 연결 시 인코딩 설정

4. PHP 파일의 헤더 기능을 사용하여 인코딩 결정

7. 캐싱하는 경우 활성화되면 smarty 동시에 정적 html 페이지가 생성됩니다. 설정된 시간 내에 만료되지 않으면 다시 액세스하면 html 파일에 액세스하게 되므로 데이터베이스를 읽을 필요성이 줄어듭니다. 효율성 측면에서는 더 높습니다.

8.smarty의 할당 및 템플릿 로드

$Smarty->할당(name,value)

$Smarty->display('index.html')

9. 의 목적은?

php와 html을 분리하기 위해 아티스트와 프로그래머는 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

10. 스마티의 주요 구성은 무엇인가요?

1. smarty.class.php를 도입합니다.

3. 기본 템플릿 경로를 다시 수정합니다.

5. - 기본 구성 파일 경로를 수정합니다.

6. 기본 캐시 경로를 다시 수정합니다.

7. 캐시 활성화 여부를 설정할 수 있습니다.

8. 왼쪽 및 오른쪽 구분 기호를 설정할 수 있습니다.

11. 스마티 사용 시 주의해야 할 사항은 무엇인가요?

Smarty는 MVC 개념을 기반으로 하는 템플릿 엔진으로, 페이지 프로그램을 뷰 레이어와 컨트롤 레이어의 두 부분으로 나눕니다.

즉, smarty 기술은 사용자 UI를 PHP 코드와 분리합니다.

이런 방식으로 프로그래머와 아티스트는 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

12.smarty를 사용할 때 다음 사항에 주의하세요.

1.smarty를 올바르게 구성하세요. 주로 smarty 개체를 인스턴스화하고 smarty 템플릿 파일의 경로를 구성해야 합니다.

2. PHP 페이지에 페이지를 표시하려면 할당 및 표시를 사용하세요.

3. 스마트 템플릿 파일에서는 허용되지 않습니다. 함수는 구분 기호 내에 포함되어야 합니다.

A.{}

B.if else

D.Literal

맨 위로

6. 2차 개발의 이해

2차 개발은 간단히 말해서 기존 소프트웨어를 맞춤화 및 수정하고 기능을 확장한 다음 원하는 기능을 달성하는 것입니다. 일반적으로 원래 시스템의 핵심은 변경되지 않습니다.

2. MVC

모델 데이터 처리.

템플릿 표시를 봅니다.

컨트롤러가 프로세스를 제어합니다.

MVC의 개념은 무엇인가요? 각 레벨의 주요 임무는 무엇인가요?

MVC(Model-View-Controller)는 소프트웨어 디자인 패턴 또는 프로그래밍 아이디어입니다.

M은 모델 레이어, V는 뷰 레이어(표시 레이어 또는 사용자 인터페이스), C는 컨트롤러 레이어를 나타냅니다.

mvc를 사용하는 목적은 M과 V를 분리하여 하나의 프로그램이 서로 다른 사용자 인터페이스를 쉽게 사용할 수 있도록 하는 것입니다.

웹사이트 개발에서

모델 레이어는 일반적으로 데이터베이스 테이블 정보의 추가, 삭제, 수정, 확인을 담당하고,

뷰 레이어는 페이지 내용을 표시하는 역할을 담당하고,

컨트롤러 레이어는 M과 M 사이의 조절 역할을 합니다. V, 컨트롤러 계층은 어떤 모델 클래스를 호출할지 결정합니다. 실행이 완료된 후 컨트롤러 계층은 결과를 어떤 뷰 계층에 할당할지 결정합니다.

3. 설치 후 보조 개발 프로그램에 접속할 때 일부 경고 및 오류가 발생했습니다

오류에 따라 서버 구성 매개변수 및 Baidu

4 기능, 템플릿 교체, 기능 추가 및 수정

사실, 객체지향 애플리케이션의 사용이나 템플릿의 교체는 smarty

의 사용과 유사합니다. 5. 어떤 보조 개발 도구를 사용해 보셨나요?

Dedecms phpcms ecshop, 이러한 기본 사항에 대한 기초가 탄탄하다면 배우는 데 문제가 없을 것입니다.

6. PHP처럼 1차 개발을 하는 것이 좋을까요, 아니면 2차 개발을 하는 것이 좋을까요?

일반적으로 중소기업에서는 효율성을 위해 2차 개발에 cms 시스템을 사용합니다. 물론 한꺼번에 개발하고 싶다면 프레임워크 사용법을 알고 있고 시간이 충분하다면 괜찮습니다. 대기업에서는 저작권 문제를 피하기 위해 팀 단위로 개발합니다.

7. 2차 개발 과정에서 여러 클래스 간의 메소드 액세스는 어떻게 전송되나요?是 클래스 상속이 아니라 객체 조합입니다. 인스턴스화된 객체는 Global을 통해 전달됩니다.

8. DedEcms 디렉토리가 교체되면 어떻게 백그라운드에서 가져올 수 없습니까?

배경 코어 설정을 현재 프로젝트 디렉터리 이름으로 변경합니다.

9. Dedecms의 사용자 정의 모델을 이해합니까?

DreamWeaver 시스템에는 콘텐츠 모델이라는 개념이 있습니다. 다양한 콘텐츠 모델을 사용하여 다양한 콘텐츠 형태의 사이트를 구축할 수 있습니다. 시스템에는 일반 기사, 사진 앨범, 소프트웨어, 제품, 분류된 정보, 주제 등의 모델이 제공됩니다. . 시스템과 함께 제공되는 모델을 통해 이를 사용하여 다양한 유형의 사이트를 구축할 수 있습니다. 예를 들어 아틀라스를 사용하여 사진 사이트를 구축하고 소프트웨어 모델을 사용하여 소프트웨어 다운로드 사이트를 구축할 수 있습니다.

물론, 시스템과 함께 제공되는 위 모델을 시스템 모델이라고 합니다. 사용자는 책, 음악 앨범 등과 같은 일부 모델을 직접 정의할 수 있습니다. 이러한 모델을 사용자 정의해야만 더 많은 콘텐츠 형식을 갖춘 사이트를 구축할 수 있습니다.

현재 요구 사항의 변화에 ​​맞게 테이블 구조를 자동으로 추가하는 것과 같습니다

10. 템플릿 디자인 및 사용에 대한 개념은 다음 개념을 이해해야 합니다

1. :

웹 사이트 홈페이지 또는 더 중요한 열 표지 채널에서 사용되는 템플릿을 말하며 일반적으로 "index_identification ID.htm"으로 명명됩니다. 또한 사용자가 정의한 단일 페이지 또는 사용자 정의 태그도 선택적으로 섹션 템플릿 태그를 지원할 수 있습니다. 예인 경우 시스템은 섹션 템플릿 태그 엔진을 사용하여 콘텐츠를 출력하거나 특정 파일을 생성하기 전에 콘텐츠를 구문 분석합니다.

2. 목록 템플릿:

웹사이트의 특정 열에 있는 모든 기사 목록에 대한 템플릿을 의미하며 일반적으로 "list_identification ID.htm"이라는 이름을 사용합니다.

3. 아카이브 템플릿:

기사 템플릿과 같은 문서 보기 페이지의 템플릿을 나타내며 일반적으로 "article_identification ID.htm"이라는 이름을 갖습니다.

4. 기타 템플릿:

일반 시스템에는 일반적으로 홈 페이지 템플릿, 검색 템플릿, RSS, JS 컴파일 기능 템플릿 등의 템플릿이 포함됩니다. 또한 사용자는 템플릿을 사용자 정의하여 파일을 만들 수도 있습니다.

11. 디데에는 몇 개의 태그가 사용되나요?

목록 및 콘텐츠 태그는 해당 범위 내에서만 사용할 수 있고, 목록 태그는 목록에서만 사용할 수 있으며, 콘텐츠 태그는 콘텐츠 태그에서만 사용할 수 있습니다.

글로벌 태그는 모든 페이지에서 사용 가능합니다

12. 일반 클래스 라이브러리에 익숙함

(예: dedesql.class.php), 시스템 함수 라이브러리(common.func.php)에 익숙함, 프런트엔드 항목에 익숙함, files (common.inc.php)

맨 위로

7. WeChat 공개 플랫폼 개발

1. WeChat 운영 메커니즘

공식 계정과 PHP 간의 통신에 사용되는 언어: //데이터 XML 데이터 수신

2. 메시지 유형

WeChat은 현재 다음과 같은 7가지 기본 메시지 유형을 제공합니다.

(1) 문자 메시지(문자);

(2) 사진 메시지( 이미지)

(3) 음성(음성)

(4) 비디오(동영상)

(5) 지리적 위치(위치) ;

(6) 링크 메시지(link)

(7) 이벤트 푸시(event)

유형. 다양한 메시지 유형을 보낼 때 데이터 전송 형식을 마스터하세요

4. 전체 파일을 문자열로 읽어오는 함수는

File_get_contents

5. 일반적으로 사용되는 함수

XML 데이터를 개체로 구문 분석하는 함수는 다음과 같습니다.

simplexml_load_string( )

문자열을 배열로 변환하는 함수는 ___explode_________이고, 배열을 문자열로 변환하는 함수는 ____implode________입니다.

URL 문자열을 인코딩하는 문자열은 ____urlencode________입니다.

6 Sprintf 함수의 역할

매뉴얼을 확인하실 수 있습니다.

7. 위챗 공식 계정은 왜 서비스를 제공할 수 없나요?数据 1. 네트워크 이유, 데이터 인터페이스 이유

2. 코드 오류, 이유 추측 방법

확인 위치, 코드가 맞으면

데이터를 출력하여 확인할 수 있습니다. PHP를 사용하여 파일을 조작하세요

$myfile = fopen("newfile.txt", "w");

$txt = "aaaaaaaaaa";

fwrite($myfile, $txt);

fclose($ myfile );

8. 맞춤 메뉴 이벤트 푸시

점프 링크를 클릭하세요

사진

이벤트가 팝업됩니다. 위챗 사진첩 발신자 이벤트

팝업 위치 선택기 이벤트

9. 토큰의 역할

WeChat 서버와 PHP 서버 간의 보안 검증에 사용되는 보안 메커니즘 검증

10. Appid 및 secret의 역할

API 인터페이스(예: 메뉴 조작)를 요청할 때 두 가지 값을 전달해야 합니다. ​​​appid와 secret을 통해 해당 애플리케이션의 인증 코드를 받으세요

맨 위로 돌아가기

8. 습득한 기술 설명:


1. PHP+MYSQL을 사용하세요. 방향은 스마트한 템플릿 엔진에 능숙하세요. , ThinkPHP 프레임워크, WeChat 공개 플랫폼 개발, DEDE, ecshop 및 기타 보조 개발 시스템, 그리고 데이터베이스 측면에서 어느 정도 이해하고 있으며, MYSQL, MSSQL 및 기타 데이터베이스에 능숙합니다.

2. 프론트엔드 기술: p+CSS 웹페이지 레이아웃, javascript, JQuery 프레임워크, AJAX 기술, 포토샵 이미지 처리 능숙

3. 1년 간의 프로젝트 개발 경험, smarty를 이용한 'XXXXXXXX' 개발, ThinkPHP 개발 'XXXXXXXX'는 WeChat 공개 플랫폼을 사용하여 '고용 서비스 네트워크'의 공개 계정을 개발했으며 Dreamweaver 시스템을 사용하여 기업 웹 사이트 등을 개발했습니다.

1. PHP 언어의 주요 장점 중 하나는 크로스입니다. - 크로스 플랫폼이란 무엇입니까?

PHP 실행 환경의 최적 조합은 Apache+MySQL+PHP입니다. 이 실행 환경은 다양한 운영체제(예: Windows, Linux 등)에서 구성할 수 있으며 운영체제에 의해 제한되지 않으므로 크로스라고 합니다. -platform

2. WEB 개발 시 데이터를 제출하는 방법은 몇 가지가 있나요? 차이점은 무엇입니까? Baidu는 어떤 방법을 사용하나요?

Get과 post는 두 가지 방법입니다

차이점: 1. Get은 서버에서 데이터를 얻고 post는 서버로 데이터를 전송합니다

2 Get으로 전달된 값은 URL에 표시되고 post로 전달된 값은 다음과 같습니다. url

4.Get에서 전달되는 값은 일반적으로 2KB 이내이며, post 값 크기는 php.ini에서 설정할 수 있습니다.

5. Get 보안이 낮지 않고 사후 보안이 높지만 실행 효율성이 높습니다. Post보다

권장 사항:

1. 보안이 Post 방식보다 좋지 않습니다. 기밀 정보가 포함된 경우 Post 데이터 제출 방식을 사용하는 것이 좋습니다. 2. Get 방식을 사용하는 것이 좋습니다. 데이터 쿼리의 경우 데이터를 추가, 수정 또는 삭제하려면 Post 메서드를 사용하는 것이 좋습니다.

Baidu에서 사용하는 get 메서드는 해당 URL에서 볼 수 있기 때문입니다

3. etc. of PHP

Framework: zendframe, CI, Yii 등 많은 프레임워크가 있습니다. 우리가 배운 것은 thinkphp

template 엔진입니다. 교과서에서 우리가 배운 것은 smart

입니다. 시스템: Kangsheng의 제품(uchome, supesite, discuzX 등), Empire 시스템, DEDE(Dream Weaver), ecshop 등이 있습니다. 우리가 배운 것은 DEDECMS 및 Ecshop

4입니다. 당신이 마스터한 웹 프론트 엔드 기술은 무엇입니까?

p+CSS 웹 페이지 레이아웃, JavaScript, jQuery 프레임워크, 포토샵 이미지 처리에 능숙

5. AJAX의 장점은 무엇인가요?

ajax는 부분 새로 고침을 달성하기 위해 javascript 또는 JQuery 프레임워크를 통해 구현할 수 있는 비동기 전송 기술로, 서버에 대한 부담을 줄이고 사용자 경험을 향상시킵니다.

6. 보안이 프로그램에 중요한 이유를 알려주세요. 개발 중에 보안 메커니즘에 주의를 기울여야 합니까?

①원격 제출 방지, ②SQL 삽입 방지 및 특수 코드 필터링, ③등록 기계 플러딩 방지 및 인증 코드 사용

7. 프로그램 개발 시 어떻게 하면 프로그램의 운영 효율성을 높일 수 있나요?

① SQL 문을 최적화하고, 어떤 필드를 사용하여 하위 쿼리를 덜 사용하고 퍼지 쿼리를 덜 사용하세요. 자주 사용하는 프로그램 수신된 데이터는 캐시됩니다.

8. PHP를 다른 데이터베이스와 함께 사용할 수 있나요?

PHP与MYSQL数据库是最优搭配,当然PHP也可以去其它的数据库搭配使用,例如MSSQL等,PHP中预留了操作MSSQL的函数,只要开启就可以使用

9. 现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?

MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

10. 对json数据格式的理解?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递

PHP中处理json格式的函数为json_decode( string $json [, bool $assoc ] ) ,接受一个 JSON格式的字符串并且把它转换为PHP变量,参数json待解码的json string格式的字符串。assoc当该参数为TRUE时,将返回array而非object;

Json_encode:将PHP变量转换成json格式

14. PHP处理数组的常用函数?(重点看函数的‘参数’和‘返回值’)

①array()创建数组;②count()返回数组中元素的数目;③array_push()将一个或多个元素插入数组的末尾(入栈);④array_column()返回输入数组中某个单一列的值;⑤array_combine()通过合并两个数组来创建一个新数组;⑥array_reverse()以相反的顺序返回数组;⑦array_unique()删除数组中的重复值;⑧in_array()检查数组中是否存在指定的值;

15. PHP处理字符串的常用函数?(重点看函数的‘参数’和‘返回值’)

①trim()은 문자열 양쪽에서 공백 문자와 기타 문자를 제거합니다. ②substr_replace()는 문자열의 일부를 다른 문자열로 대체합니다. ③substr_count()는 문자열에 하위 문자열이 나타나는 횟수를 계산합니다. ④substr()은 문자열의 일부를 반환합니다. ⑤strtolower()는 문자열을 대문자로 변환합니다. ⑦strtr()은 문자열에서 특정 문자를 찾습니다. 다른 문자열에서 문자열이 처음 나타나는 경우(대소문자 구분), strrev()는 문자열의 길이를 반환합니다. str_replace()는 문자열의 일부 문자를 바꿉니다(대소문자 구분). 하나 이상의 문자열을 출력합니다;explore()는 문자열을 배열로 나눕니다. is_string()은 변수가 문자열인지 여부를 감지합니다. 그리고 영문자

16. PHP 처리 시간에 흔히 사용되는 함수는 무엇인가요? (함수의 '매개변수'와 '반환값'에 집중하세요)

date_default_timezone_get()은 기본 시간대를 반환합니다.

date_default_timezone_set()은 기본 시간대를 설정합니다.

date()는 현지 시간/날짜 형식을 지정합니다.

getdate()는 날짜/시간 정보를 반환합니다.

gettimeofday()는 현재 시간 정보를 반환합니다.

microtime()은 현재 시간의 마이크로초 수를 반환합니다.

mktime()은 날짜의 Unix 타임스탬프를 반환합니다.

strtotime()은 영어 텍스트 날짜 또는 시간 설명을 Unix 타임스탬프로 구문 분석합니다.

time()은 현재 시간의 Unix 타임스탬프를 반환합니다.

17. PHP에서 데이터베이스를 처리하는 데 사용되는 일반적인 기능은 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

PHP 매뉴얼을 참고해서 주의 깊게 읽어주세요. 이것은 매우 중요합니다

18. PHP에서 파일을 조작하는데 일반적으로 사용되는 함수는 무엇인가요? (함수의 '매개변수' 및 '반환 값'에 중점을 둡니다.)

①파일 열기, ③파일 읽기, ⑤파일 수정, ⑦파일 만들기 등. 직장에서 캐시나 정적 파일을 생성하는 데 자주 사용됩니다. PHP 설명서를 참조하여 주의 깊게 확인하세요

19. PHP 운영 디렉터리(폴더)의 일반적인 기능은 무엇인가요? (함수의 '매개변수'와 '반환값'에 초점을 맞춥니다.)

①디렉터리 열기, ②디렉토리 삭제, ③디렉터리 읽기, ⑤디렉터리 수정, 등등. 작업할 때 업로드된 파일에 대한 디렉터리를 생성하거나 삭제하는 경우, 캐시 및 정적 페이지에 대한 디렉터리를 생성하거나 삭제하는 데 사용되는 경우가 많습니다. PHP 매뉴얼을 참고하여 주의 깊게 읽어보시기 바랍니다

3. 객체지향 부분

1. -지향? (이해한 후 답변)

답변: 객체지향 OO = 객체지향 분석 OOA + 객체지향 설계 OOD + 객체지향 프로그래밍 OOP라는 것이 대중적인 설명입니다. 독립된 개체(단위)로 간주되기 때문에 C처럼 여러 기능으로 나누어지는 것이 아니라 스스로 자신의 기능을 완성할 수 있습니다.

현재 순수 OO 언어는 주로 Java와 C#입니다. PHP와 C++도 OO를 지원합니다.​​

2. private, protected, public 한정자의 접근권한을 간략하게 설명합니다.

답변: private: Private 멤버는 클래스 내부에서만 접근할 수 있습니다.

protected: 보호된 멤버이며 클래스 및 상속된 클래스 내에서 액세스할 수 있습니다.

public: 공개 회원, 완전 공개, 접근 제한 없음.

3. 힙과 스택의 차이점은 무엇인가요?

답변: 스택은 컴파일 중에 할당되는 메모리 공간이므로 코드에서 스택 크기를 명확하게 정의해야 합니다.

힙은 프로그램 실행 중에 동적으로 할당되는 메모리 공간입니다. 프로그램의 실행 상태에 따라 할당할 힙 메모리의 크기를 결정합니다.

4. XML과 HTML의 주요 차이점

답변: (1) XML은 대문자와 소문자를 구분하지만 HTML은 그렇지 않습니다.

(2) HTML에서는 문맥에 단락이나 목록 키가 끝나는 위치가 명확하게 표시되는 경우

또는 와 같은 닫는 태그를 생략할 수 있습니다. XML에서는 닫는 태그를 생략하면 안 됩니다.

(3) XML에서 일치하는 닫는 태그 없이 단일 태그가 있는 요소는 / 문자로 끝나야 합니다. 이렇게 하면 파서는 닫는 태그를 찾지 않는다는 것을 알게 됩니다.

(4) XML에서는 속성 값을 따옴표로 묶어야 합니다. HTML에서 따옴표는 선택 사항입니다.

(5) HTML에서는 값 없이 속성 이름을 가질 수 있습니다. XML에서는 모든 속성에 해당 값이 있어야 합니다.

5. 객체지향의 특징은 무엇인가요?

답변: 주로 캡슐화, 상속, 다형성이 있습니다. 4가지 측면인 경우 추상화를 추가합니다.

다음 설명은 이해를 돕기 위한 것입니다.

캡슐화:

캡슐화는 소프트웨어 구성 요소가 뛰어난 모듈성을 갖도록 보장하는 기반입니다. 캡슐화의 목표는 소프트웨어 구성 요소의 높은 응집력과 낮은 결합을 달성하여 프로그램의 상호 의존성을 방지하는 것입니다. 다가오는 변경 사항.

상속:

클래스를 정의하고 구현할 때 기존 클래스를 기반으로 할 수 있으며, 이 기존 클래스에서 정의한 콘텐츠를 자신의 콘텐츠로 사용할 수 있으며, 새로운 콘텐츠를 추가하거나 원본 콘텐츠를 수정할 수 있습니다. 특별한 요구에 더 적합하게 만드는 것이 상속입니다. 상속은 하위 클래스가 상위 클래스 데이터와 메서드를 자동으로 공유하는 메커니즘입니다. 이는 소프트웨어의 재사용성과 확장성을 향상시키는 클래스 간의 관계입니다.

다형성:

다형성은 프로그램에서 정의된 참조 변수가 가리키는 특정 유형과 참조 변수를 통해 발행되는 메소드 호출이 프로그래밍 중에 결정되는 것이 아니라 프로그램 실행 중에 결정된다는 것을 의미합니다. 참조 변수가 가리키는 클래스 인스턴스 개체와 참조 변수가 발행한 메서드 호출을 구현하는 클래스는 프로그램 실행 중에 결정되어야 합니다.

추상화:

추상화란 어떤 사물의 유사성과 공통점을 찾아 클래스로 분류하는 것입니다. 이 수업은 이러한 사물의 유사성과 공통점만 고려하고 현재 주제와 관련 없는 것은 무시합니다. 현재 목표와 관련된 측면에 집중하세요. 예를 들어, 개미와 코끼리를 보고 그들이 얼마나 비슷한지 상상할 수 있다면 그것이 추상입니다.

6. 추상 클래스와 인터페이스의 개념과 차이점은 무엇인가요?

답변: 추상 클래스: 인스턴스화할 수 없고 다른 클래스의 상위 클래스로만 사용할 수 있는 특수 클래스입니다. abstract 키워드를 사용하여 선언했습니다.

특수 추상 클래스이자 인터페이스 선언을 사용하는 특수 클래스입니다.

(1) 추상 클래스의 작업은 상속 키워드 확장을 통해 구현되고, 인터페이스 사용은 Implements 키워드를 통해 구현됩니다.

(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 세 개의 키워드는 각각 무엇을 의미하나요? 어떤 상황에서 사용되나요?

답변: $this 현재 객체

자체 현재 클래스

현재 클래스의 상위 부모 클래스

$this는 현재 클래스에서 사용됩니다. 속성과 메서드를 호출하려면 ->를 사용하세요.

self는 현재 클래스에서도 사용되는데 ::를 사용해 호출해야 합니다.

부모님은 수업에 사용됩니다.

11. 클래스에서 상수를 정의하는 방법, 클래스에서 상수를 호출하는 방법, 클래스 외부에서 상수를 호출하는 방법.

답변: 클래스의 상수도 멤버 상수입니다. 상수는 변하지 않는 수량이며 상수 값입니다.

const 키워드를 사용하여 상수를 정의하세요.

例如:const PI = 3.1415326;

无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象,

访问常量的格式都是类名加作用域操作符号(双冒号)来调用。

即:类名 :: 类常量名;

12、 作用域操作符::如何使用?都在哪些场合下使用?

答:调用类常量

调用静态方法

13、__autoload()方法的工作原理是什么?

答:使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。

当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。

这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后

就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。

使用自动载入的魔术函数可以不必要写很多个include或者require函数。

返回顶部

四、ThinkPHP部分

1、常见的PHP框架

答:thinkPHP

yii

ZendFramework

CakePhp

sy

2、如何理解TP中的单一入口文件?

答:ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口。应该说,所有项目都是从入口文件开始的,并且所有的项目的入口文件是类似的,入口文件中主要包括:

定义框架路径、项目路径和项目名称(可选)

定义调试模式和运行模式的相关常量(可选)

载入框架入口文件(必须)

 

3、ThinkPHP中的MVC分层是什么?(理解)

答:MVC 是一种将应用程序的逻辑层和表现层进行分离的方法。ThinkPHP 也是基于MVC设计模式的。MVC只是一个抽象的概念,并没有特别明确的规定,ThinkPHP中的MVC分层大致体现在:

模型(M):模型的定义由Model类来完成。

控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。

视图(V):由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。

但实际上,ThinkPHP并不依赖M或者V ,也就是说没有模型或者视图也一样可以工作。甚至也不依赖C,这是因为ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的情况下,必然存在视图V,否则就不再是一个完整的应用。

总而言之,ThinkPHP的MVC模式只是提供了一种敏捷开发的手段,而不是拘泥于MVC本身。

 

5、如何理解 ThinkPHP 3.0 架构三(核心 + 行为 + 驱动)中的行为?

答:核心 + 行为 + 驱动

TP官方简称为:CBD

核心(Core):就是框架的核心代码,不可缺少的东西,TP本身是基于MVC思想开发的框架。

行为(Behavior) :行为在新版ThinkPHP的架构里面起着举足轻重的作用,在系统核心之上,设置了很多标签扩展位,而每个标签位置可以依次执行各自的独立行为。行为扩展就因此而诞生了,而且很多系统功能也是通过内置的行为扩展完成的,所有行为扩展都是可替换和增加的,由此形成了底层框架可组装的基础。

驱动( Driver ):数据库驱动、缓存驱动、标签库驱动和模板引擎驱动,以及外置的类扩展。

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

 

6、什么是惯例配置?

答:惯例配置上一页下一页惯例重于配置是系统遵循的一个重要思想,系统内置有一个惯例配置文件(位于系统目录下面的Conf\convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对应用项目的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。

惯例配置文件会被系统自动加载,无需在项目中进行加载。

7、什么是SQL注入?(理解)

답변: SQL 주입 공격은 해커가 데이터베이스를 공격하기 위해 사용하는 일반적인 수단 중 하나입니다. 일부 프로그래머는 코드를 작성할 때 사용자 입력 데이터의 적법성을 판단하지 않습니다. 인젝터는 양식에 데이터베이스 쿼리 코드를 입력하고 이를 제출할 수 있습니다. 프로그램은 제출된 정보를 모아 완전한 SQL 문을 생성하며 서버는 악성 SQL 명령을 실행합니다. 인젝터는 프로그램이 반환한 결과를 바탕으로 일부 민감한 데이터를 성공적으로 획득하고 심지어 전체 서버를 제어합니다. 이것이 바로 SQL 인젝션입니다.

8. ThinkPHP는 SQL 주입을 어떻게 방지하나요? (이해)

답변: (1) 쿼리 조건에 배열을 사용하는 것이 더 안전한 방법입니다.

(2) 문자열 쿼리 조건을 최후의 수단으로 사용해야 하는 경우 전처리 메커니즘을 사용하세요.

(3) ) 데이터 필드 유형 확인을 활성화하면 숫자 데이터 유형을 강제로 변환할 수 있습니다. (필드 유형 확인은 버전 3.1부터 필수입니다.)

(4) 자동 확인 및 자동 완성 메커니즘을 사용하여 애플리케이션에 대한 사용자 정의 필터링을 수행합니다.

(5 ) 악의적인 데이터 입력을 방지하기 위해 필드 유형 확인, 자동 유효성 검사 및 자동 완성 메커니즘을 사용합니다.

9. 디버깅 모드를 활성화하는 방법은 무엇입니까? 디버그 모드의 이점은 무엇입니까?

답변: 디버깅 모드를 켜는 것은 매우 간단합니다. 항목 파일에 상수 정의 코드 한 줄만 추가하면 됩니다.

//디버깅 모드 켜기

정의('APP_DEBUG) ', true);

//프레임워크 항목 파일 로드

require './ThinkPHP/ThinkPHP.php';

개발 단계를 완료하고 프로덕션 환경에 배포한 후에는 디버그 모드 정의만 삭제하면 됩니다. 배포 모드로 전환하는 코드입니다. 디버깅 모드를 켜면 시스템은 먼저 시스템의 기본 디버깅 구성 파일을 로드한 다음 프로젝트의 디버깅 구성 파일을 로드합니다. 디버깅 모드의 장점은 다음과 같습니다.

로깅을 켜면 오류 정보와 디버깅 정보가 표시됩니다.

템플릿 캐싱을 끄면 템플릿 수정 사항이 즉시 적용됩니다.

SQL 로그를 기록하여 SQL 분석을 용이하게 합니다.

필드 캐싱을 끄면 데이터 테이블 필드 수정이 영향을 받지 않습니다. 캐싱;

파일 케이스를 엄격하게 확인(Windows 플랫폼에서도)하여 Linux 배포 문제를 미리 발견할 수 있습니다.

개발, 테스트, 데모 및 기타 필요한 상황을 포함하여 개발 프로세스의 다양한 단계에서 편리하게 사용할 수 있습니다. 독립적인 프로젝트 구성 파일을 사용하여 다양한 애플리케이션 모드를 구성할 수 있습니다.

10. TP에서는 어떤 구성 모드가 지원되나요? 우선 사항?

답변: ThinkPHP는 프로젝트 구성에서 고유한 계층적 구성 모드를 만들었습니다. 해당 구성 수준은

기존 구성->프로젝트 구성->디버그 구성->그룹 구성->확장 구성 ->에 반영됩니다. ;동적 구성

위는 구성 파일의 로드 순서입니다. 이후 구성은 동일한 이름으로 이전 구성을 덮어쓰므로(효과적이지 않은 경우) 우선 순위는 오른쪽에서 왼쪽입니다.

11. TP의 URL 패턴은 무엇인가요? 기본값은 무엇입니까?

답변: ThinkPHP는 일반 모드, PATHINFO, REWRITE 및 호환성 모드를 포함하여 URL_MODEL 매개변수를 설정하여 정의할 수 있는 4가지 URL 모드를 지원합니다.

기본 모드는 PATHINFO 모드입니다. URL_MODEL을 1

12로 설정하세요. TP의 시스템 변수는 무엇인가요? 시스템 변수를 얻는 방법은 무엇입니까?

답변: 시스템 변수를 얻는 방법:

Action에서 다음 메서드를 호출하면 됩니다.

$this->메서드 이름 ("변수 이름", ["필터 메서드"], ["기본값" ] )

13. ThinkPHP 프레임워크에서 D 함수와 M 함수의 차이점은 무엇인가요?

답변: M 메서드는 사용자가 각 데이터 테이블에 대한 모델 클래스를 정의하지 않고도 모델을 인스턴스화합니다. D 메서드는 사용자 정의 모델 클래스가 있는 경우 자동으로 모델 클래스를 감지할 수 있습니다. 존재하지 않으면 자동으로 M 메서드를 호출하여 Model 기본 클래스를 인스턴스화합니다. 동시에 인스턴스화된 모델은 반복적으로 인스턴스화되지 않습니다(단일 사례 모드).

위로

5. 똑똑한 템플릿 엔진

1. 컴파일과 캐싱의 차이점은 무엇인가요?

smarty의 컴파일 과정은 템플릿을 가져와 내부의 태그를 해당 PHP 코드로 바꾸는 것입니다. 이는 실제로 php와 html을 혼합하는 과정입니다.

smarty의 캐시입니다. 수동으로 켜야 합니다, 똑똑하게 캐시는 컴파일된 파일을 실행하는 동시에 정적 html 페이지를 생성하는 것입니다. 다시 액세스하면 html 파일에 액세스하게 되므로 효율성 측면에서 더 높습니다

2. 스마티란 무엇인가요? 스마티의 장점은 무엇인가요?

스마티는 PHP로 작성된 PHP 템플릿 엔진으로, 프로그래머가 논리적인 내용을 변경할 수 있도록 하기 위한 것입니다. 디자이너와 아티스트는 페이지를 다시 수정할 때 프로그램의 프로그램 로직에 영향을 주지 않습니다. 이는 다중 사용자 공동 작업 프로젝트에서 특히 중요합니다. (멀티스타일 프로그램 개발도 쉽습니다.)

Smarty의 장점

1. 빠른 속도: 다른 템플릿 엔진에 비해.

2. 컴파일된 유형: smarty를 사용하여 작성된 프로그램은 런타임 시 비템플릿 기술 PHP 파일로 컴파일되어야 합니다.

3 캐싱 기술: 사용자가 최종적으로 보는 HTML 파일을 정적 HTML 페이지로 캐시할 수 있습니다.

4 플러그인 기술: smarty는 플러그인을 사용자 정의할 수 있습니다.

smarty

1. 실시간 업데이트가 필요한 콘텐츠입니다. 예를 들어, 재고 표시와 같이 빈번한 데이터 업데이트가 필요합니다. 2. 소규모 프로젝트. 단순성 때문에 아티스트와 프로그래머가 모두 필요한 소규모 프로젝트

3. 템플릿에 변수를 유지하려면 {$smarty}를 사용하세요

{$smarty.get.page} //$_GET[page]

{smarty.cookies.}

{smarty.post에 액세스하는 것과 유사합니다.}

{smarty.session.}

{smarty.server.}

4. 템플릿에서 PHP의 변수에 액세스합니다.

PHP 스크립트에는 두 가지 유형의 시스템 상수와 사용자 정의 상수가 있습니다. Smarty 템플릿에 포함되어 있으며 PHP에서 할당할 필요가 없습니다. 변수가 {$smarty}를 통해 유지되는 한 상수의 값을 직접 출력할 수 있습니다. 템플릿에서 상수 출력의 예:

{$smarty.const.__FILE__}

5. 변수 수정자

{$var|modifier1|modifier2|.. .....}

<{$str}>

<{$str|capitalize}><{*첫 글자는 대문자입니다*}>

<{$str|upper}><{*모두 대문자*}>

<{$str|lower}><{*모두 소문자*}>< ; br>

<{$str|lower|upper}><{*모두 대문자, 왼쪽에서 오른쪽으로 조정됨*}>

<{$leg|truncate}>< ; {*문자열 차단, 기본값 80자*}>

<{$leg|truncate:10}><{*문자열 차단, 처음 10자(...3자 포함) *} >

6. PHP가 mysql 데이터베이스를 쿼리할 때 중국어 결과를 쿼리할 때 잘못된 문자가 나타납니다. 어떻게 해결하나요? ? ? ?

1. 파일 속성(다른 이름으로 저장)

2. 파일 메타(브라우저 파싱 설정 시)

3. 데이터베이스 연결 시 인코딩 설정

4. PHP 파일의 헤더 기능을 사용하여 인코딩 결정

7. 캐싱하는 경우 활성화되면 smarty 동시에 정적 html 페이지가 생성됩니다. 설정된 시간 내에 만료되지 않으면 다시 액세스하면 html 파일에 액세스하게 되므로 데이터베이스를 읽을 필요성이 줄어듭니다. 효율성 측면에서는 더 높습니다.

8.smarty의 할당 및 템플릿 로드

$Smarty->할당(name,value)

$Smarty->display('index.html')

9. 의 목적은?

php와 html을 분리하기 위해 아티스트와 프로그래머는 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

10. 스마티의 주요 구성은 무엇인가요?

1. smarty.class.php를 도입합니다.

3. 기본 템플릿 경로를 다시 수정합니다.

5. - 기본 구성 파일 경로를 수정합니다.

6. 기본 캐시 경로를 다시 수정합니다.

7. 캐시 활성화 여부를 설정할 수 있습니다.

8. 왼쪽 및 오른쪽 구분 기호를 설정할 수 있습니다.

11. 스마티 사용 시 주의해야 할 사항은 무엇인가요?

Smarty는 MVC 개념을 기반으로 하는 템플릿 엔진으로, 페이지 프로그램을 뷰 레이어와 컨트롤 레이어의 두 부분으로 나눕니다.

즉, smarty 기술은 사용자 UI를 PHP 코드와 분리합니다.

이런 방식으로 프로그래머와 아티스트는 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

12.smarty를 사용할 때 다음 사항에 주의하세요.

1.smarty를 올바르게 구성하세요. 주로 smarty 개체를 인스턴스화하고 smarty 템플릿 파일의 경로를 구성해야 합니다.

2. PHP 페이지에 페이지를 표시하려면 할당 및 표시를 사용하세요.

3. 스마트 템플릿 파일에서는 허용되지 않습니다. 함수는 구분 기호 내에 포함되어야 합니다.

A.{}

B.if else

D.Literal

맨 위로

6. 2차 개발의 이해

2차 개발은 간단히 말해서 기존 소프트웨어를 맞춤화 및 수정하고 기능을 확장한 다음 원하는 기능을 달성하는 것입니다. 일반적으로 원래 시스템의 핵심은 변경되지 않습니다.

2. MVC

모델 데이터 처리.

템플릿 표시를 봅니다.

컨트롤러가 프로세스를 제어합니다.

MVC의 개념은 무엇인가요? 각 레벨의 주요 임무는 무엇인가요?

MVC(Model-View-Controller)는 소프트웨어 디자인 패턴 또는 프로그래밍 아이디어입니다.

M은 모델 레이어, V는 뷰 레이어(표시 레이어 또는 사용자 인터페이스), C는 컨트롤러 레이어를 나타냅니다.

mvc를 사용하는 목적은 M과 V를 분리하여 하나의 프로그램이 서로 다른 사용자 인터페이스를 쉽게 사용할 수 있도록 하는 것입니다.

웹사이트 개발에서

모델 레이어는 일반적으로 데이터베이스 테이블 정보의 추가, 삭제, 수정, 확인을 담당하고,

뷰 레이어는 페이지 내용을 표시하는 역할을 담당하고,

컨트롤러 레이어는 M과 M 사이의 조절 역할을 합니다. V, 컨트롤러 계층은 어떤 모델 클래스를 호출할지 결정합니다. 실행이 완료된 후 컨트롤러 계층은 결과를 어떤 뷰 계층에 할당할지 결정합니다.

3. 설치 후 보조 개발 프로그램에 접속할 때 일부 경고 및 오류가 발생했습니다

오류에 따라 서버 구성 매개변수 및 Baidu

4 기능, 템플릿 교체, 기능 추가 및 수정

사실, 객체지향 애플리케이션의 사용이나 템플릿의 교체는 smarty

의 사용과 유사합니다. 5. 어떤 보조 개발 도구를 사용해 보셨나요?

Dedecms phpcms ecshop, 이러한 기본 사항에 대한 기초가 탄탄하다면 배우는 데 문제가 없을 것입니다.

6. PHP처럼 1차 개발을 하는 것이 좋을까요, 아니면 2차 개발을 하는 것이 좋을까요?

일반적으로 중소기업에서는 효율성을 위해 2차 개발에 cms 시스템을 사용합니다. 물론 한꺼번에 개발하고 싶다면 프레임워크 사용법을 알고 있고 시간이 충분하다면 괜찮습니다. 대기업에서는 저작권 문제를 피하기 위해 팀 단위로 개발합니다.

7. 2차 개발 과정에서 여러 클래스 간의 메소드 액세스는 어떻게 전송되나요?是 클래스 상속이 아니라 객체 조합입니다. 인스턴스화된 객체는 Global을 통해 전달됩니다.

8. DedEcms 디렉토리가 교체되면 어떻게 백그라운드에서 가져올 수 없습니까?

배경 코어 설정을 현재 프로젝트 디렉터리 이름으로 변경합니다.

9. Dedecms의 사용자 정의 모델을 이해합니까?

DreamWeaver 시스템에는 콘텐츠 모델이라는 개념이 있습니다. 다양한 콘텐츠 모델을 사용하여 다양한 콘텐츠 형태의 사이트를 구축할 수 있습니다. 시스템에는 일반 기사, 사진 앨범, 소프트웨어, 제품, 분류된 정보, 주제 등의 모델이 제공됩니다. . 시스템과 함께 제공되는 모델을 통해 이를 사용하여 다양한 유형의 사이트를 구축할 수 있습니다. 예를 들어 아틀라스를 사용하여 사진 사이트를 구축하고 소프트웨어 모델을 사용하여 소프트웨어 다운로드 사이트를 구축할 수 있습니다.

물론, 시스템과 함께 제공되는 위 모델을 시스템 모델이라고 합니다. 사용자는 책, 음악 앨범 등과 같은 일부 모델을 직접 정의할 수 있습니다. 이러한 모델을 사용자 정의해야만 더 많은 콘텐츠 형식을 갖춘 사이트를 구축할 수 있습니다.

현재 요구 사항의 변화에 ​​맞게 테이블 구조를 자동으로 추가하는 것과 같습니다

10. 템플릿 디자인 및 사용에 대한 개념은 다음 개념을 이해해야 합니다

1. :

웹 사이트 홈페이지 또는 더 중요한 열 표지 채널에서 사용되는 템플릿을 말하며 일반적으로 "index_identification ID.htm"으로 명명됩니다. 또한 사용자가 정의한 단일 페이지 또는 사용자 정의 태그도 선택적으로 섹션 템플릿 태그를 지원할 수 있습니다. 예인 경우 시스템은 섹션 템플릿 태그 엔진을 사용하여 콘텐츠를 출력하거나 특정 파일을 생성하기 전에 콘텐츠를 구문 분석합니다.

2. 목록 템플릿:

웹사이트의 특정 열에 있는 모든 기사 목록에 대한 템플릿을 의미하며 일반적으로 "list_identification ID.htm"이라는 이름을 사용합니다.

3. 아카이브 템플릿:

기사 템플릿과 같은 문서 보기 페이지의 템플릿을 나타내며 일반적으로 "article_identification ID.htm"이라는 이름을 갖습니다.

4. 기타 템플릿:

일반 시스템에는 일반적으로 홈 페이지 템플릿, 검색 템플릿, RSS, JS 컴파일 기능 템플릿 등의 템플릿이 포함됩니다. 또한 사용자는 템플릿을 사용자 정의하여 파일을 만들 수도 있습니다.

11. 디데에는 몇 개의 태그가 사용되나요?

목록 및 콘텐츠 태그는 해당 범위 내에서만 사용할 수 있고, 목록 태그는 목록에서만 사용할 수 있으며, 콘텐츠 태그는 콘텐츠 태그에서만 사용할 수 있습니다.

글로벌 태그는 모든 페이지에서 사용 가능합니다

12. 일반 클래스 라이브러리에 익숙함

(예: dedesql.class.php), 시스템 함수 라이브러리(common.func.php)에 익숙함, 프런트엔드 항목에 익숙함, files (common.inc.php)

맨 위로

7. WeChat 공개 플랫폼 개발

1. WeChat 운영 메커니즘

공식 계정과 PHP 간의 통신에 사용되는 언어: //데이터 XML 데이터 수신

2. 메시지 유형

WeChat은 현재 다음과 같은 7가지 기본 메시지 유형을 제공합니다.

(1) 문자 메시지(문자);

(2) 사진 메시지( 이미지)

(3) 음성(음성)

(4) 비디오(동영상)

(5) 지리적 위치(위치) ;

(6) 링크 메시지(link)

(7) 이벤트 푸시(event)

유형. 다양한 메시지 유형을 보낼 때 데이터 전송 형식을 마스터하세요

4. 전체 파일을 문자열로 읽어오는 함수는

File_get_contents

5. 일반적으로 사용되는 함수

XML 데이터를 개체로 구문 분석하는 함수는 다음과 같습니다.

simplexml_load_string( )

将字符串转换为数组的函数是___ explode_________,将数组转化为字符串的函数是____implode________.

编码 URL 字符串的字符串是____urlencode________.

6. Sprintf函数的作用

  这个都是可以查手册的。

7. 微信公众号出现无法提供服务的原因?

   1. 网络原因 ,数据接口原因

2. 代码错误,怎么推测原因

       修改的哪里检查一下,如果代码没错

    可以输出数据 看一下。用php操作文件

 

    $myfile = fopen("newfile.txt", "w");

    $txt ="aaaaaaaaaa";

    fwrite($myfile, $txt);

    fclose($myfile);

 

8.  自定义菜单的事件推送

       单击

       单击跳转链接

       扫码推事件

       扫码推且弹出

       弹出系统拍照发图的事件

       弹出微信相册发图器的事件

       弹出地理位置选择器的事件

9.token的作用

   安全机制验证,用于微信服务器与PHP服务器之间的安全验证
10. Appid与secrect的作用

   请求api接口(例如菜单的操作)时需要传appid与secrect两个值,用来获取应用的授权码  

返回顶部

八、对于自身掌握的技术描述:

1. 以PHP+MYSQL为方向,熟练掌握smarty模板引擎、ThinkPHP框架、微信公众平台开发、DEDE、ecshop等二次开发系统,对面向对象有一定的理解;数据库方面,熟练掌握MYSQL、MSSQL等数据库;熟悉在linux下的PHP开发

2. 前端技术:熟练掌握p+CSS网页布局,javascript,JQuery框架、AJAX技术、photoshop图片处理

3. 一年的项目开发经验,使用smarty开发过‘XXXXXXXX’,ThinkPHP开发过‘XXXXXXXX’,使用微信公众平台开发过‘就业服务网’的公众号,使用织梦系统开发过企业站等。

위 내용은 PHP 면접 주요 질문 공유 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!