Adabas, d, DBA, dBase, DBM, filePro, Informix, InterBase, mSQL, Microsoft SQL Server, MySQL, Solid,;
인터넷에서도 이메일과 관련된 IMAP 및 POP3 네트워크 관리 시스템 SNMP; 를 포함한 상당한 통신 프로토콜을 지원합니다. 인터넷 뉴스 NNTP;; 을 눌러 섹션을 인쇄할 수도 있습니다 계좌 번호 * * * 용 NIS;; 을 눌러 섹션을 인쇄할 수도 있습니다 글로벌 정보 네트워크 HTTP 및 아파치 서버; 디렉토리 프로토콜 LDAP 및 기타 네트워크 관련 기능
또한 PHP 로 작성된 CGI 프로그램은 다른 운영 체제로 쉽게 마이그레이션할 수 있습니다. 예를 들어, 시스템 로드가 너무 높으면 Linux 기반 웹 사이트에서 CGI 프로그램을 다시 컴파일하지 않고도 전체 시스템을 SUN 워크스테이션으로 신속하게 마이그레이션할 수 있습니다. 인터넷의 급속한 발전에 직면하여, 이것은 장기 계획에 가장 적합한 선택이다.
관련 구문 및 개념
Php 는 8 가지 기본 유형을 지원합니다.
네 가지 스칼라 유형: 부울 정수 부동 소수점 ("double" 이라고도 함) 문자열 (string)
배열 객체라는 두 가지 복합 유형이 있습니다.
마지막으로 두 가지 특수 유형, 즉 자원이 비어 있습니다.
코드의 가독성을 보장하기 위해 이 설명서에서는 몇 가지 의사 유형 (mixed, number, callback) 에 대해서도 설명합니다.
구문 (PHP 코드 경계 문자
설명에는 세 가지 구문이 있습니다: //comment 이것은 한 줄 주석입니다 /*comment*/ 이것은 여러 줄 주석입니다 #comment 스크립트 유형 주석입니다. 기본 구조 제어문은://분기 구조 (구조 선택) if (조건) {//문} if (조건) {//문} else {// 문} if (조건) { Case "value2"://statementbreak; 기본값: //Statement}// 루프 구조 while (조건) {//statement} do {//statement} while (조건); For (초기화 : 판사; Change) {//Statement}// Array 특수 루프 문 foreach ($ array as $ value) {echo $ value; } foreach($ Arrayas $ key =>;; $ value){ echo $ key;; Echo $ value} PHP 인스턴스 1 개:
객체 지향 프로그래밍의 개념
저자마다 관점이 다를 수 있지만 OOP 언어에는 다음과 같은 측면이 있어야 합니다.
1. 추상 데이터 유형 및 정보 캡슐화
2. 유산
3. 다형성
PHP 에서 클래스로 캡슐화://OOP 클래스에서는 일반적으로 큰 쌍봉의 명명 방식을 사용하며, 각 단어의 이니셜은 classSomething{// Scope 수정자 대문자: public 및 public * * * 개인 개인 보호받는 //속성 이름은 일반적으로 소문자 private $ x = null// 프로그래밍 권장 사항에서 내부적으로 사용되는 속성에는 전용 수정자가 부여되고 메서드에 의해 값이 지정되어야 합니다. //방법 이름은 일반적으로 작은 낙타봉으로 명명됩니다. 첫 글자는 모두 소문자이고 나머지 이니셜은 대문자입니다. //PHP 는 자동으로 $this for 변수를 사용하지 않으므로 피연산자 publicfunctionsetx ($ v) {$this-> x = $ v; 를 가리키는 $ this 의사 변수를 적극적으로 추가해야 합니다 } publicfunctiongetx () {return $ this-> X; 물론 당신은 자신의 취향에 따라 정의할 수 있지만, 기준을 유지하는 것이 더 효과적이다. 데이터 멤버는 클래스의 var 선언에 의해 정의되며 값을 지정할 때까지 유형이 지정되지 않습니다. 데이터 멤버는 정수, 배열, 연관 배열 또는 객체일 수 있습니다. 메서드는 클래스에서 함수로 정의됩니다. 메서드의 클래스 멤버 변수에 액세스할 때 $ this->; 이름을 지정합니다. 그렇지 않으면 한 메서드에 대해 하나의 로컬 변수만 될 수 있습니다.
New 연산자를 사용하여 객체를 생성합니다. $ obj = newSomething 그런 다음 멤버 함수를 사용하여 $ obj-& gt;; 를 전달할 수 있습니다 Setx (5); $ see = $ obj-& gt;; Getx (); Echo $ see 이 예에서 setX 멤버 함수는 클래스가 아닌 객체의 멤버 변수 x 에 5 를 할당하고 getX 는 값 5 를 반환합니다. 다음과 같을 수 있습니다: $ obj-& gt;; X=6 일 때 클래스 참조를 통해 데이터 멤버에 액세스하는 것은 좋은 OOP 습관이 아닙니다. 방법을 통해 멤버 변수에 액세스하는 것이 좋습니다. 멤버 변수를 처리할 수 없는 것으로 간주하고 객체 핸들로만 메서드를 사용한다면 훌륭한 OOP 프로그래머가 될 것입니다. 불행히도 PHP 는 개인 멤버 변수 선언을 지원하지 않으므로 PHP 에서도 잘못된 코드가 허용됩니다. Extends 키워드를 사용하면 PHP 에서 상속을 쉽게 수행할 수 있습니다. Class another extends something {private $ y; Publicfunctionsety ($ v) {$ this-> Y = $ v;; } functiongety () {return $ this-> Y; }} 다른 클래스의 객체에는 상위 클래스의 모든 데이터 멤버 및 메서드가 있으며 자체 데이터 멤버 및 메서드도 추가됩니다.
$ obj2 = newAnother$ obj 2-& gt;; 를 사용할 수 있습니다 Sety (5); Echo $ obj 2-& gt;; Gety (); PHP 는 단일 상속만 지원하므로 둘 이상의 클래스에서 새 클래스를 파생할 수 없습니다. 파생 클래스에서 메서드를 재정의할 수 있습니다. 다른 클래스에서 getX 메서드 (메서드 다시 쓰기) 를 재정의하면 어떤 것에서도 getX 메서드를 사용할 수 없습니다. 파생 클래스에서 기본 클래스와 이름이 같은 데이터 멤버를 선언하면 처리할 때 기본 클래스의 데이터 멤버가 "숨김" 됩니다.
클래스에서 생성자를 정의할 수 있습니다. 생성자는 클래스의 객체를 만들 때 호출되는 클래스 이름과 이름이 같은 메서드입니다. 예를 들어 classsomething {private $ x = null//새 버전의 생성자는 클래스 이름을 버리고 _ _ construct () 를 사용합니다 X = $ x} publicfunctionsetx ($ v) {$ this-> X = $ v;; } publicfunctiongetx () {return $ this-> X; }//소멸자 함수 public function _ _ destroy () {} 이렇게 하면 $ $obj=newSomething(6) 을 통해 객체를 만들 수 있습니다. (6); 생성자는 데이터 변수 x 에 6 을 자동으로 할당합니다. 생성자와 메서드는 모두 일반 PHP 함수 ("_ _" 두 밑줄, 자동 메서드) 이므로 기본 매개 변수를 사용할 수 있습니다. Publicfunction _ construct ($ x = 3, $ y = 5) {} then: $ obj = new something (); //x = 3andy = 5 $ obj = new something (8); //x = 8 Andy = 5 $ obj = new something (8,9); //x=8andy=9 기본 매개 변수는 C++ 형식이므로 y 의 값을 무시하고 x 에 기본 매개 변수를 지정하고 왼쪽에서 오른쪽으로 값을 지정할 수 없습니다. 수신 매개변수가 필요한 매개변수보다 작으면 기본 매개변수가 사용됩니다.
파생 클래스의 객체를 만들 때 해당 생성자만 호출되고 상위 클래스의 생성자는 호출되지 않습니다. 기본 클래스의 생성자를 호출하려면 파생 클래스의 생성자에서 parent::__construct () 를 사용해야 합니다. 할 수 있는 것은 모든 상위 메서드를 파생 클래스에서 사용할 수 있다는 것입니다. Classanotherextendsomething {public function _ _ construct () {부품:: _ _ construct (5,6); //기본 클래스 생성자 호출 }}OOP 의 좋은 메커니즘은 추상 클래스를 사용하는 것입니다. 추상 클래스는 인스턴스화할 수 없으며 파생 클래스에 하나의 인터페이스만 제공할 수 있습니다. 디자이너는 일반적으로 추상 클래스를 사용하여 프로그래머가 기본 클래스에서 파생되도록 강제합니다. 이렇게 하면 새 클래스에 원하는 기능이 포함됩니다. PHP 에는 표준 메서드가 없지만 이 특성이 필요한 경우 기본 클래스를 정의하고 생성자 뒤에 die 호출을 추가하여 기본 클래스가 인스턴스화되지 않도록 하고 각 메서드 (인터페이스) 뒤에 die 문을 추가하여 프로그래머가 파생 클래스에서 메서드를 다시 작성하지 않으면 오류가 발생할 수 있습니다. 또한 PHP 는 유형이 지정되지 않기 때문에 객체가 기본 클래스에서 파생되었는지 확인해야 할 수 있으므로 기본 클래스에 메서드를 추가하여 클래스의 id 를 설명하고 (특정 ID 반환) 객체 매개 변수를 받을 때 이 값을 확인해야 합니다. 물론, 나쁜 악한 프로그래머가 파생 클래스에서 이 방법을 다시 썼다면 이 방법은 안 되겠지만, 게으른 프로그래머가 사악한 프로그래머보다 더 많다는 것이 일반적인 문제다. (빌 게이츠, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머)
물론 프로그래머가 기본 클래스를 볼 수 없도록 하는 것도 좋다. 인터페이스만 인쇄하고 그들의 일을 잘하면 된다. PHP 5 는 C++ 와 같은 다른 객체 지향 언어와 유사한 구문 분석 함수의 개념을 도입했습니다. 구문 분석 함수는 객체에 대한 모든 참조가 삭제되거나 객체가 명시적으로 삭제될 때 실행됩니다.
PHP 는 약한 유형 언어이기 때문에 오버로드를 지원하지 않습니다 (덮어쓰기와는 다름). OOP 에서는 두 개 이상의 메서드가 동일한 이름을 갖도록 메서드를 다시 로드할 수 있지만, 언어에 따라 매개변수의 수나 유형이 다릅니다. PHP 는 느슨한 유형의 언어이므로 유형별로 다시 로드하는 것은 작동하지 않지만 다른 수의 매개변수로 다시 로드하는 것도 작동하지 않습니다.
때때로 OOP 에서 생성자를 다시 로드하는 것이 좋습니다. 이렇게 하면 다른 방식으로 객체 (변수 함수) 를 만들 수 있습니다. PHP 에서 구현되는 기술은 classmyclass {publicfunctionmyclass () {$ name = myclass 입니다. Func _ num _ args () 를 참조하십시오. //이 함수는 전달된 인수의 수 $ this->; $ name (); //이 변수 값을 함수 이름으로 호출하는 변수 함수를 사용합니다.} publicfunctionmyclass1($ x) {/code} publicfunctionmyclass2 ( //myclass1$ obj2 = new myclass ('1','2') 가 호출됩니다. //는 Myclass2 를 호출합니다. 때때로 이것은 매우 유용하다.
다형성
다형성이란 런타임에 전달되는 객체 매개 변수에 따라 호출할 객체의 메서드를 결정하는 기능입니다. 예를 들어, 그래픽 클래스가 있는 경우 드로잉 메서드를 정의합니다. 원과 직사각형 클래스를 파생합니다. 파생 클래스에서 draw 메서드를 다시 작성했으며 매개 변수 x 를 사용하고 $ x-& gt;; 를 호출할 수 있는 함수가 있을 수 있습니다 Draw (). 다형성인 경우 호출할 draw 메서드는 이 함수에 전달된 객체 유형에 따라 달라집니다.
PHP 와 같은 해석적 언어의 다형성 (C++ 컴파일러가 이러한 코드를 생성한다고 가정하면 어떤 메서드를 호출해야 합니까? 너는 네가 어떤 대상을 가지고 있는지 모른다. 음, 이것은 요점이 아니다.) 이것은 쉽고 자연스럽다. 그래서 PHP 는 물론 다형성을 지원합니다. Classcalc {functionnicedrawing ($ x) {//Board 클래스 $ x->(Board class $ x- >) 의 메서드라고 가정합니다. Draw (); }} classcircle {publicfuncodraw () {echo 원을 그렸습니다. }} classrectangle {publicfuncodraw () {echo 는 사각형을 그렸습니다. }} $ board = newcalc $ obj = newcircle (3,187); $ obj2 = newrectangle (4,5); $ board->; Nice drawing ($ obj); //Circle 의 draw 메서드 $ board- > 가 호출됩니다. Nice drawing ($ obj2); PHP 객체 지향 프로그래밍은 Rectangle 의 draw 메서드를 호출합니다.
물론, 일부 순수주의자들은 PHP 가 진정한 대상 언어가 아니라고 말할지도 모릅니다. PHP 는 혼합 언어입니다. OOP 나 전통적인 절차적 프로그래밍을 사용할 수 있습니다. 그러나 대규모 프로젝트의 경우 PHP 에서 순수 OOP 를 사용하여 클래스를 선언하고 프로젝트에서 객체와 클래스만 사용할 수 있습니다.
프로젝트가 커지면서 OOP 를 사용하는 것이 도움이 될 수 있습니다. OOP 코드는 유지 보수, 이해 및 재사용이 쉽습니다. 이것들은 소프트웨어 공학의 기초이다. 이러한 개념을 웹 기반 프로젝트에 적용하는 것이 향후 웹 사이트 성공의 열쇠가 될 것입니다.
고급 객체 지향 기술
기본적인 OOP 개념을 읽은 후, 좀 더 고급 기술을 보여드릴 수 있습니다.
직렬화 (직렬화)
PHP 는 영구 개체를 지원하지 않습니다. OOP 에서 영구 객체는 여러 응용 프로그램에 대한 참조에서 상태와 기능을 유지할 수 있는 객체입니다. 즉, 객체를 파일이나 데이터베이스에 저장할 수 있으며 나중에 로드할 수 있습니다. 이것은 소위 직렬화 메커니즘입니다. PHP 에는 객체를 통해 호출할 수 있는 직렬화 메서드가 있으며 직렬화 메서드는 객체의 문자열 표현을 반환합니다. 그러나 직렬화는 객체의 멤버 데이터만 저장하고 메서드는 포함하지 않습니다.
PHP4 에서 객체를 문자열 $s 로 직렬화하고 객체를 놓은 다음 $obj 로 역직렬화하면 object 메서드를 계속 사용할 수 있습니다! 이 동작은 (a) 문서에서 향후 버전에서 계속 사용할 수 있다고 보장할 수 없기 때문에 권장하지 않습니다. (b) 직렬화된 버전을 디스크에 저장하고 스크립트를 종료할 때 오해가 발생할 수 있습니다. 나중에 이 스크립트를 실행할 때 객체를 deserialize 할 때 해당 객체의 메서드도 있을 것으로 기대할 수 없습니다. 문자열 표현에는 메서드가 전혀 포함되지 않기 때문입니다.
결론적으로 PHP 직렬화는 객체의 멤버 변수를 저장하는 데 유용합니다. 관련 배열과 배열을 하나의 파일로 직렬화할 수도 있습니다.
예: $ obj = new classfoo (); $ str = serialize ($ obj); //디스크에 $str 저장 $ obj2 = unserialize ($ str); //몇 달 후//디스크에서 str 을 로드하면 멤버 데이터를 복구할 수 있지만 문서에 따라 방법이 포함되지 않습니다. 이로 인해 이 문제를 해결할 수 있는 유일한 방법은 $ obj2->; 멤버 변수에 액세스하는 x (다른 방법이 없습니다! ), 그래서 집에서 시도하지 마십시오.
이 문제를 해결할 수 있는 몇 가지 방법이 있는데, 나는 이 간결한 문장 때문에 보관할 것이다. PHP 후속 버전의 완전 직렬화 기능을 환영합니다.
PHP 와 OOP 에서 클래스를 사용하여 데이터를 저장하는 좋은 점 중 하나는 클래스를 쉽게 정의하여 무언가를 조작할 수 있고 원할 때 해당 클래스를 호출할 수 있다는 것입니다. 사용자가 제품 ID 번호를 선택하여 제품을 선택할 수 있는 HTML 양식이 있다고 가정합니다. 데이타베이스에 제품 정보가 있습니다. 당신은 제품을 보여주고 싶고, 그 가격 등을 보여주고 싶습니다. 너는 다른 종류의 제품을 가지고 있고, 같은 동작이 제품마다 다른 의미를 가질 수 있다. 예를 들어 사운드를 표시하는 것은 재생을 의미할 수 있지만 다른 유형의 제품의 경우 데이터베이스에 저장된 그림을 표시하는 것을 의미할 수 있습니다. OOP 또는 PHP 를 사용하여 인코딩을 줄이고 품질을 향상시킬 수 있습니다.
제품의 클래스를 정의하고 있어야 하는 메서드 (예: display) 를 정의한 다음 각 제품 클래스의 클래스를 정의합니다. 이러한 클래스는 제품 클래스 (SoundItem 클래스, ViewableItem 클래스 등) 에서 파생됩니다. ), 그리고 제품 클래스의 방법을 덮어 당신의 생각에 따라 행동하도록 합니다.
데이터베이스에 있는 각 제품의 유형 필드에 따라 클래스 이름을 지정합니다. 일반적인 제품 표에는 (id, 유형, 가격, 설명 등) 이 있을 수 있습니다. ) ... 그런 다음 처리 스크립트에서 데이터베이스에서 유형 값을 가져와서 type: $obj=new$type () 이라는 객체를 인스턴스화할 수 있습니다. $ obj-& gt;; Action (); 이것은 PHP 의 아주 좋은 특징이다. 객체 유형에 관계없이 $obj 표시 메서드 또는 다른 메서드를 호출할 수 있습니다. 이 기술을 사용하면 스크립트를 수정하여 새 유형의 개체를 추가할 필요가 없습니다. 클래스를 추가하여 처리하기만 하면 됩니다.
이 함수는 매우 강력합니다. 모든 객체 유형에 관계없이 메서드를 정의하고 다른 클래스에서 다른 방식으로 구현한 다음 주 스크립트에서 모든 객체에 사용하면 ... else 가 없고 두 명의 프로그래머가 필요하지 않은 경우 행복합니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 행복명언)
프로그래밍이 쉽고, 유지보수가 싸고, 재사용할 수 있다는 것에 동의하십니까?
만약 네가 한 무리의 프로그래머를 관리한다면, 일을 분배하는 것은 매우 간단하다. 모든 사람은 한 가지 유형의 객체와 이를 처리하는 클래스를 책임질 수 있다.
이 기술을 통해 국제화를 실현하고 사용자가 선택한 언어 영역에 따라 적절한 클래스를 적용하는 등의 작업을 수행할 수 있습니다.
복제 및 복제
$obj 에 대한 객체를 생성할 때 $obj2=$obj 를 통해 객체를 복사할 수 있습니다. 새 객체는 참조가 아니라 $obj 의 사본이므로 그 당시 $obj 의 상태를 가지고 있었습니다. 때때로 너는 이렇게 하고 싶지 않다. 너는 단지 obj 클래스와 같은 새로운 개체를 만들고 싶을 뿐이다. New 문을 사용하여 클래스의 생성자를 호출할 수 있습니다. PHP 의 직렬화 및 기본 클래스를 통해서도 구현할 수 있지만 다른 모든 클래스는 기본 클래스에서 파생되어야 합니다.
위험 지역으로 들어가다
개체를 직렬화하면 특정 형식의 문자열을 얻을 수 있습니다. 흥미를 가지고 연구할 수 있는데, 그 중 문자열에는 반의 이름이 포함되어 있습니다. (대단하군요! ), 예를 들어 $ herring = serialize ($ obj); $vec=explode (':',$ herring); //문자열을 배열로 분할합니다. 식별자 $nam=str_replace(\,'', $ vec [2]); 따라서 universe 클래스를 만들고 모든 클래스가 universe 에서 확장되도록 강제한다고 가정하면 Universe 에서 clone 메서드를 다음과 같이 정의할 수 있습니다. 새 PHP 버전의 Class Universe {//Cloning (_ _ clone) $vec=explode (':',$ herring); $nam=str_replace(\,'', $ vec [2]); $ ret = new $ Nam 은 $ ret} }// 를 반환하고 $ obj = new something (); ///Extend $ other = $ obj-& gt;; 클론 (); Something 클래스의 새 객체는 new 메서드를 사용하고 생성자를 호출하여 만든 객체와 동일합니다. 이것이 너에게 도움이 되는지 모르겠다. 우주류는 파생류의 이름을 아는 것이 좋은 경험이다. 상상력이 유일한 제한이다.
템플릿 엔진 Smarty:Smarty 는 템플릿을 PHP 스크립트로 컴파일하고 실행하는 것이 특징입니다. 아주 빨리, 아주 편리해요. Heyes Template Class: 페이지 레이아웃과 디자인을 코드에서 분리하는 데 도움이 되는 매우 사용하기 쉽고 강력하며 빠른 템플릿 엔진입니다. FastTemplate: 템플릿을 분석하고 HTML 코드에서 변수 값을 분리하는 간단한 변수 보간 템플릿 클래스입니다. 셸 페이지: 전체 웹 사이트 레이아웃이 템플릿 파일을 기반으로 할 수 있는 사용하기 쉬운 클래스입니다. 템플릿을 수정하면 전체 웹 사이트를 변경할 수 있습니다. STP 단순 템플릿 분석기: 간단하고 경량하며 사용하기 쉬운 템플릿 분석 클래스입니다. 여러 템플릿에서 한 페이지를 어셈블한 다음 결과 페이지를 브라우저나 파일 시스템으로 출력할 수 있습니다. OO 템플리트 클래스: 자체 프로그램에서 사용할 수 있는 객체 지향 템플리트 클래스입니다. SimpleTemplate: 웹 사이트를 만들고 구조화할 수 있는 템플릿 엔진입니다. 템플릿을 구문 분석하고 컴파일할 수 있습니다. BTemplate: PHP 논리 코드를 HTML 수정자 코드와 분리할 수 있는 짧고 빠른 템플릿 클래스입니다. Savant: 강력한 경량 PEAR 호환 템플릿 시스템입니다. 컴파일되지 않고 PHP 자체를 템플릿 언어로 사용합니다. ETS-easy template system: 동일한 데이터를 사용하여 템플리트를 재구성할 수 있는 템플리트 시스템입니다. EasyTemplatePHP: 간단하지만 강력한 웹 사이트 템플릿 시스템입니다. VlibTemplate: 캐시 및 디버그 클래스가 포함된 빠르고 일반적인 템플릿 시스템입니다. 시스템 자원을 적게 사용하는 멀티바이트 보안 템플릿 엔진. Grafx 소프트웨어를 표시하거나 숨기는 Fast Template:Fast Template 시스템의 수정 버전을 설정할 수 있는 변수 대체를 지원합니다. 캐시 기능, 디버그 콘솔 및 음소거 제거를 할당 블록으로 포함합니다. TemplatePower: 빠르고 간단하며 강력한 템플릿 클래스입니다. 주요 기능은 블록/파일에 지원 및 할당되지 않은 변수 표시/숨기기가 포함된 중첩된 동적 블록 지원입니다. 태그 템플릿: 이 라이브러리의 기능은 템플릿 파일을 사용하도록 설계되었으며 HTML 파일에서 정보를 검색할 수 있도록 설계되었습니다. Htmltmpl: 템플릿 엔진: 파이썬 및 PHP 용 템플릿 엔진. 프로젝트에서 코드와 디자인을 분리하고자 하는 웹 응용 프로그램 개발자를 대상으로 합니다. Dreamweaver 템플릿 구문 분석을 위한 Php 클래스: Gallery 2 및 WordPress 의 사용자 정의 모듈에 사용되는 Dreamweaver 템플릿 분석을 위한 간단한 클래스입니다. Minitemplate 엔진: HTML 파일의 컴팩트 템플릿 엔진입니다. 템플릿 변수 및 블록 정의에 대한 간단한 구문이 있습니다. 그 중 블록은 중첩될 수 있습니다. 레이아웃 솔루션: 웹 사이트 개발 및 유지 관리를 단순화합니다. 페이지 레이아웃 작업을 반복할 필요가 없도록 공통 변수와 페이지 요소가 있습니다. 캐시 FastTemplate: Fast Template 에 통합되어 템플릿 파일을 캐시하거나 개별 블록 컨텐츠에 다른 사양을 캐시할 수 있습니다. TinyButStrong: MySQL, Odbc, Sql-Server 및 ADODB 를 지원하는 템플릿 엔진. 여기에는 7 개의 메서드와 2 개의 속성이 포함되어 있습니다. Brian Lozier 의 PHP 기반 템플릿 엔진: 크기가 2K 에 불과하고 매우 빠르며 객체 지향적입니다. WACT: 코드와 디자인을 분리하는 템플릿 엔진. PHP tal:PHP 아래의 XML/XHTML 템플릿 라이브러리입니다. 영 _ 보기 _ 무적미: 무적미 개발한 국산 프레임워크 용틀의 템플릿 엔진은 smarty 와 비슷하며, 속도가 빠르다는 장점이 있고, 단점은 템플릿 라벨이 적지만 충분하다는 점이다. 프레임 소개 thinkphp
ThinkPHP 는 무료 오픈 소스, 빠르고 간단한 객체 지향 경량 PHP 개발 프레임워크로, 2006 년 초 Apache2 오픈 소스 프로토콜 출시에 따라 민첩한 웹 애플리케이션 개발 및 단순화된 엔터프라이즈 애플리케이션 개발을 위해 개발되었습니다. ThinkPHP 는 탄생한 날부터 단순하고 실용적인 디자인 원칙을 고수하고 있으며 뛰어난 성능과 간단한 코드를 유지하면서 사용 편의성에 초점을 맞추고 있습니다. 그리고 그것은 많은 독창적인 기능과 특징을 가지고 있다. 커뮤니티 팀의 적극적인 참여로 사용 편의성, 확장성, 성능 등을 지속적으로 최적화하고 향상시킵니다. 국내 최고의 영향력 있는 웹 애플리케이션 개발 프레임워크로 성장했으며, 많은 전형적인 사례들이 비즈니스 및 포털 레벨 개발에 안정적으로 사용되고 있습니다.
PHP 인증 수준
PHP 과정은 초급 (IFE), 중급 (IPE) 및 고급 (IAE) 의 세 부분으로 구성됩니다. IFE 는 Index 프런트 엔드 엔지니어의 약어로 지수 프런트 엔드 엔지니어를 의미합니다. IPE 는 인덱스 PHP 엔지니어를 의미하는 Index PHP Engineer 의 약어입니다. IAE 는 지수 건축/수석 엔지니어의 약어로 지수 고급/건축 엔지니어를 의미합니다. PHP 보안
사실, PHP 는 웹 서버의 모듈 기능 일 뿐이므로 먼저 웹 서버의 보안을 보장해야합니다. 물론, 웹 서버가 안전하려면 먼저 시스템 안전을 보장해야 하는데, 이것은 매우 억지스럽고 끝이 없다. 일반적인 웹 보안 취약점으로는 주입 공격, 사이트 간 공격, 서버 취약성 등이 있습니다. 자세한 설명은 확장 독서의 "웹 보안-2065 438+00 _ owasp _ top10" 을 참조하십시오.
PHP 학습 프로세스 및 방법의 장점
PHP 구문은 c, Perl, ASP 또는 JSP 와 유사합니다. PHP 는 위의 언어 중 하나에 익숙한 사람들에게 너무 간단하다. 반대로 PHP 에 대해 더 많이 알고 있다면 다른 여러 언어를 쉽게 배울 수 있습니다. 짧은 시간 내에 PHP 의 모든 핵심 언어 특성을 파악하기만 하면 됩니다. HTML 에 대해 잘 알고 있을 수도 있고, 소프트웨어를 편집하고 설계하거나 손으로 아름다운 웹사이트를 만드는 방법도 이미 알고 있을 것입니다. PHP 코드는 사이트에 무중단으로 추가할 수 있으므로 사이트를 설계하고 유지 관리할 때 PHP 를 쉽게 추가하여 사이트를 더욱 동적으로 만들 수 있습니다.
데이터베이스 접속
PHP 는 많은 데이터베이스에 연결된 함수로 컴파일할 수 있습니다. PHP 와 MySQL 은 훌륭한 조합이며 Apache 서버를 추가하면 완벽합니다. 자신의 주변 장치 함수를 작성하여 간접적으로 데이터베이스에 액세스할 수도 있습니다. 이렇게 하면 사용 중인 데이터베이스를 변경할 때 이러한 변경 사항에 맞게 인코딩을 쉽게 변경할 수 있습니다. PHPLIB 는 일반적인 트랜잭션 요구 사항을 제공하는 가장 일반적인 기본 라이브러리입니다.
팽창성
앞서 언급했듯이 PHP 는 이미 빠른 성장기에 접어들었다. 프로그래머가 아닌 사람에게는 PHP 의 추가 기능을 확장하기가 어려울 수 있지만 PHP 프로그래머에게는 어렵지 않습니다.
PHP 확장성
전통적으로 웹 페이지의 상호 작용은 CGI 를 통해 이루어졌다. CGI 프로그램의 확장성은 실행 중인 각 CGI 프로그램에 대해 별도의 프로세스를 열기 때문에 이상적이지 않습니다. 해결책은 CGI 프로그램을 작성하는 데 자주 사용되는 언어의 인터프리터 (예: mod_perl, JSP) 를 컴파일하는 것입니다. PHP 는 이렇게 설치할 수 있지만, 이렇게 CGI 에 설치하기를 원하는 사람은 거의 없습니다. 내장형 PHP 는 확장성이 더 뛰어납니다.
PHP 무료 설치
PHP 소스 코드 패키지 설치판: 이 버전은 이미 독자적인 웹 사이트 도메인 이름과 웹 사이트 공간이 있는 전문 웹 사이트 구축 사용자에게 적합합니다. 사용 방법은 여전히 간단합니다. 단 세 단계만 있으면 됩니다.
먼저 공식 홈페이지로 이동: 최신 버전의 설치판 PHP 소스 코드 팩을 다운로드하고 다운로드한 파일의 압축을 풀고 PHP 를 지원하는 사이트 공간에 모든 내용을 업로드하십시오.
둘째, 파일 등록 정보를 변경하려면 루트 디렉토리 아래에 PHP 접미사가 붙은 파일과 폴더' /include/domain.php' 및'/attachments'/'data' 및 폴더 아래의 모든 파일 등록 정보를' 읽기 가능' 으로 변경합니다
셋째, 사이트의 루트 디렉토리를 열면 setup 설치 프로그램이 자동으로 실행되고 프롬프트에 따라 다음 작업을 클릭합니다.
우정 알림: 당신이 우리의 소프트웨어를 다운로드 할 때, 이 묘사를 보면, 당신은 반드시 기업 웹 사이트 건설에 대한 일정한 수요가 있거나, 당신이 웹 사이트 건설 기술 학습자라는 것을 알 수 있습니다.
파일 형식 PHP 코드만 포함된 파일의 경우 파일 끝에서 무시하겠습니까? & gt. 이는 불필요한 공백이나 기타 문자가 코드에 영향을 주지 않도록 하기 위한 것입니다. 예를 들면 다음과 같습니다.
$ foo =' foo 들여쓰기는 코드의 논리적 결과를 반영해야 합니다. 가급적 네 개의 공백을 사용하세요. 탭은 클라이언트 간 프로그래머 소프트웨어의 유연성을 보장하기 때문에 금지되어 있습니다. 예: if (1= = $ x) {$ indexed _ code =1; If (1= = $ new _ line) {$ more _ indented _ code =1; 변수에 값을 할당하여 동일한 간격과 배열을 유지하는 것이 좋습니다. 예: $ variable =' demo$ var =' demo2 행당 코드 길이는 80 자 이내로 조절해야 하며 최대 길이는 120 자를 넘지 않아야 합니다. Linux 읽기 파일은 80 열이기 때문에 코드 행이 80 자를 초과하면 추가 지침이 지급됩니다. 작은 문제처럼 보이지만 완벽을 추구하는 프로그래머들에게도 관심과 준수가 필요한 규범이다. 각 행의 끝에는 여분의 공백이 허용되지 않습니다. Php 파일 메모장 깨진 편집 문제
일반적으로 메모장 편집기가 파일 편집 및 저장을 완료하면 기본 인코딩은 ANSI 와 중국어입니다. 그러나 PHP 의 언어는 로켈을 설정할 때 UTF-8 이며, 직접 저장한 후 Apache 와 같은 HTTP-서버 구문 분석에 손상된 경우가 많습니다.
따라서 메모장을 사용하여 편집한 후 파일을 다른 이름으로 저장할 수 있으며 파일 유형은 "모든 파일" 을 선택하고 인코딩은 파일에 지정된 언어 인코딩과 일치해야 합니다.
산술연산자
PHP 연산자에는 산술, 할당, 비교 및 논리 연산자가 포함됩니다.
산술 연산자:
더하기, 빼기, 곱하기, 나누기, 모듈러스 (나머지)+,-,*,/,%
할당 연산자: (다음 설명은 많은 책에서 다릅니다.)
할당, 덧셈 할당, 뺄셈 할당, 곱셈 할당, 나눗셈 할당 및 하이픈 할당.
=,+=,-=, * =,/=,. =
비트 연산자:
비트 및, 비트 또는, 비트 또는 비트 비, 왼쪽으로 이동, 오른쪽으로 이동
& amp, |,, ~, < & lt, gt; & gt
비교 연산자:
같음, 정확히 같음, 같지 않음, 정확히 같지 않음, 보다 큼, 보다 작음, 크거나 같음, 보다 작거나 같음.
= =, = = = =,! = (< & gt),! = =,>,<, gt; =,<=
논리 연산자:
논리 및, 논리 또는 논리 비, 논리 또는
& amp& amp, | |,! , 다름 또는
문자열 연산자:
。 두 문자열을 연결합니다.