머리말:
오늘은 PHP의 객체지향적 특성을 소개하겠습니다. 객체지향이라고 하면 프로세스지향을 언급해야겠습니다. 왜냐하면 제가 초보자였을 때는 차이점을 구분하지 못하는 경우가 많았기 때문입니다. 그렇다면 객체 지향과 프로세스 지향의 차이점은 무엇입니까? 간단히 소개하겠습니다.
객체 지향어떤 객체가 문제를 처리하는지에 집중하세요.
가장 큰 특징은 속성과 함수를 갖는 클래스로 구성되어 있으며, 해당 클래스에서 객체를 얻어 문제를 해결할 수 있다는 점입니다.
프로세스 중심문제 해결 과정에 집중하세요. 이 문제를 하나씩 해결하기 위해 일련의 프로세스를 사용한다는 것이 가장 큰 특징입니다.
객체지향과 프로세스지향의 차이점을 이해한 후, 객체지향 PHP의 기본 지식을 배워보겠습니다.
***이 장의 키워드: 객체 지향 기본, 캡슐화 및 상속, PHP 키워드, 싱글톤, 객체 직렬화 및 매직 메소드, 추상 클래스 및 추상 메소드, 인터페이스 및 다형성.
우리가 알아야 할 PHP 객체지향의 세 가지 주요 특징은 상속;
1. 객체지향의 기본 |
一객체 지향
1. 클래스란 무엇인가요?
동일한 속성(특성)과 방법(행동)을 가진 일련의 개체 집합입니다. 클래스는 추상적인 개념입니다.
2. 객체란 무엇인가요?
클래스에서 얻은 특정 속성 값을 가진 개체를 객체라고 합니다. 대상은 특정 개인입니다.
예: 인간; 장산
3. 클래스와 객체의 관계는 무엇인가요?
클래스는 객체의 추상화입니다! 객체는 클래스의 구체화입니다!
클래스는 이 유형의 객체가 어떤 속성을 가지고 있는지 나타낼 뿐이며 특정 값을 가질 수 없으므로 클래스는 추상적입니다.
객체는 클래스의 모든 속성을 할당한 후 생성되는 특정 개체입니다.
2. 클래스 선언 및 인스턴스화
1. 클래스 선언 방법:
클래스 클래스 이름 {
액세스 수정자 $property[=기본값];
[액세스 수정자 ] 함수 메서드 (){}
}
2. 클래스 선언 시 주의 사항:
①클래스 이름은 영숫자와 밑줄로만 구성할 수 있으며, 숫자로 시작할 수 없으며 큰 낙타 표기법을 준수해야 합니다. rule;
②클래스 이름은 클래스로 수정해야 하며, 클래스 이름 뒤에 ()가 있으면 안 됩니다.
③속성은 반드시 접근 수정자가 있어야 하며, 메소드에는 접근 수정자가 없어도 됩니다.
3. 인스턴스화된 객체 및 객체 속성 메서드 호출:
$object name = new class name(); //()는
클래스 외부에서 속성 및 메서드 호출:
$Object name-> $Attribute name; //->를 사용하여 속성을 호출하는 경우 속성 이름에는 $ 기호
호출 속성 및 메소드가 포함될 수 없습니다.
$this -> $속성명;
3. 생성자
1. 생성자란?
생성자는 클래스의 특수 함수입니다. new 키워드를 사용하여 객체를 인스턴스화하는 것은 클래스의 생성자를 호출하는 것과 같습니다.
2. 생성자의 기능은 무엇인가요?
객체를 인스턴스화할 때 자동으로 호출되어 객체의 속성에 초기값을 할당하는 데 사용됩니다!
3. 생성자 작성 방법:
①생성자 이름은 클래스와 동일해야 합니다.
[public] function Person($name){
$this -> ;
}
②매직 메소드 사용 __construct
[public] function __construct($name){
$this -> name = $name;
}
4. :
①첫 번째 작성 방법은 생성자 이름과 클래스 이름이 동일해야 합니다! ! ! !
②클래스에 직접 작성한 생성자가 없으면 시스템에는 기본적으로 null 매개 변수 생성자가 있으므로 new Person()을 사용할 수 있습니다.
매개 변수가 있는 생성자를 작성하면 더 이상 null이 없습니다. 매개변수 생성, 즉 new Person()은 직접 사용할 수 없습니다.
Person은 생성자의 요구 사항을 충족해야 합니다. ! ! !
③두 생성자가 동시에 존재하는 경우 __construct가 사용됩니다.
5. 소멸자: __destruct():
① 소멸자는 객체가 파괴되고 해제되기 전에 자동으로 호출됩니다.
② 소멸자는 어떤 매개 변수도 사용할 수 없습니다. 개체가 사용된 후에는 리소스 등을 닫습니다.
6. 마법의 방법:
PHP는 __로 시작하는 일련의 함수를 제공합니다. 이러한 함수는 수동으로 호출할 필요가 없습니다.
이러한 유형의 함수는 자동으로 호출됩니다. 매직을 매직 기능이라고 합니다.
예: 새 객체가 생성될 때 __construct(){} 함수가 자동으로 호출됩니다.
객체가 삭제될 때 __destruct(){} 함수가 자동으로 호출됩니다.
매직 메서드 외에도 다음이 필요합니다. 사용자 정의 함수 및 메소드는 __로 시작할 수 없습니다.
마지막으로 일반적으로 더 복잡한 기능을 가진 클래스의 경우 별도의 클래스 파일에 작성합니다.
클래스 파일 이름은 "클래스 이름 소문자.class.php" 방식을 사용하여 동일한 소문자로 지정합니다.
이 클래스를 다른 파일에서 사용할 때 include를 사용하여 이 ".class.php" 파일을 가져올 수 있습니다.
2. 캡슐화 및 상속 |
3. PHP 키워드 |
1.final
①최종 수정 클래스, 이 클래스는 최종 클래스이므로 상속할 수 없습니다!
②최종 수정 방법, 이 방법은 최종 방법이므로 재정의할 수 없습니다!
③final은 속성을 수정할 수 없습니다.
2. static
① 정적 속성과 정적 메서드라고 하는 속성과 메서드를 수정할 수 있으며, 클래스 속성과 클래스 메서드라고도 합니다.
② 정적 속성과 정적 메서드는 클래스 이름만 사용할 수 있습니다. 직접 전화하세요.
"클래스 이름::$정적 속성", "클래스 이름::정적 메서드()"
Person::$sex; Person::say();
3정적 속성 및 메서드를 사용하세요. 클래스는 로드될 때 객체가 생성되기 전에 선언됩니다.
4정적 메서드에서는 비정적 속성이나 메서드를 호출할 수 없습니다.
비정적 메서드에서는 정적 속성과 메서드를 호출할 수 있습니다.
(클래스가 로드될 때 정적 속성과 메서드가 생성되었고, 비정적 속성 메서드는 아직 인스턴스화되지 않았기 때문입니다.)
⑤ 클래스에서는 self 키워드를 사용하여 클래스 이름을 참조할 수 있습니다. .
class Person{
static $sex = "nan";
function say(){
echo self::$sex;
}
}
⑥ 정적 속성은 다음과 같습니다. Shared 즉, new에 의해 생성된 많은 객체도 동일한 속성을 공유합니다.
3.const 키워드:
define() 함수가 아닌 클래스에 상수를 선언하세요! const 키워드를 사용해야 합니다.
define() 문과 유사하게 const 키워드는 상수를 선언하는 데 사용할 수 없으며 모두 대문자로 사용해야 합니다!
상수는 한번 선언되면 변경할 수 없습니다. 호출할 때 정적과 마찬가지로 클래스 이름을 사용하여 Person::constant를 호출합니다.
4.instanceof 연산자:
객체가 특정 클래스의 인스턴스인지 감지합니다. (아버지, 할아버지, 증조부 포함...)
$zhangsan instanceof Person;
[간단히 요약] 여러 특수 연산자
1. ""만 연결할 수 있습니다. 2. => 배열을 선언할 때 관련 키와 값 ["key"=>"value"]
3. -> 멤버 메소드;
4, ::
① 상위 클래스에서 동일한 이름의 메소드를 호출하려면 parent 키워드를 사용하십시오. parent::say()
② 클래스 이름(및 self)을 사용하십시오. 속성 클래스, 정적 메서드 및 상수에서 정적 메서드를 호출합니다.
4. 싱글턴 |
5.객체 직렬화 및 매직 메서드 |
***키워드: clone 및 __clone, __antoload(), 직렬화 및 역직렬화(직렬화 및 역직렬화), 유형 제약 조건, 매직 메서드 요약(12)
1 Clone 및 __clone
1. . 객체를 다른 객체에 할당하기 위해 =를 사용할 때 실제로 할당되는 것은 객체의 주소입니다.
두 개체가 동일한 주소를 가리키므로 한 개체가 변경되면 다른 개체도 변경됩니다.
예: $lisi = $zhangsan;
2. 한 객체를 다른 객체로 완전히 복제하려면 두 객체가 독립적이며 서로 간섭하지 않습니다.
복제를 사용해야 합니다. 키워드 ;
eg: $lisi = clone $zhangsan; //두 객체는 서로 간섭하지 않습니다
3.__clone():
① clone 키워드를 사용하여 객체를 복제할 때 clone 함수는 다음과 같습니다. 자동으로 호출됩니다.
②__clone() 함수는 복제할 때 사용되는 생성자와 유사하며 새로 복제된 객체에 초기 값을 할당할 수 있습니다.
3 __clone() 함수의 $this는 새로 복제된 객체를 참조합니다.
일부 버전에서는 $that을 사용하여 복제된 객체를 참조할 수 있지만 대부분의 버전에서는 이를 지원하지 않습니다.
4. __toString()
echo 및 기타 출력 문을 사용하여 객체를 직접 인쇄하는 경우 echo $zhangsan;
을 호출한 다음 __toString() 함수에서 반환되는 문자열을 지정할 수 있습니다. __toString( ){
return "haha";
}
echo $zhangsan; //결과는 다음과 같습니다. haha
5, __call()
class 를 사용하면 __call() 메서드가 자동으로 실행됩니다.
자동으로 실행되면 두 개의 매개변수가 __call() 메소드에 전달됩니다.
매개변수 1: 호출할 메소드의 이름
매개변수 2: 호출 메소드의 (배열) 매개변수 목록.
2.__antoload()
① 이것은 클래스에서 사용되지 않는 유일한 매직 메소드입니다.
② 존재하지 않는 클래스가 인스턴스화되면 이 매직 메소드가 자동으로 호출됩니다. ③Call 하면 매개변수가 자동으로 __autoload()에 전달됩니다: 인스턴스화된 클래스 이름
따라서 이 메서드를 사용하여 자동으로 파일을 로드하는 기능을 구현할 수 있습니다.
function __autoload($className){
include "class/".strtolower($className).".class.php";
}
$zhangsan=new Person();//this 파일에 Person 클래스가 없으면 __autoload()가 자동으로 실행되어 person.class.php 파일을 로드합니다
3. 직렬화 및 역직렬화(Serialization and Deserialization)
1. 직렬화: 일련의 작업을 통해 객체를 문자열로 변환하는 과정을 직렬화라고 합니다. 상태 설명)
2. 직렬화 해제: 직렬화된 문자열을 객체로 변환하는 과정을 직렬화 해제라고 합니다.
3.
①객체를 네트워크를 통해 전송해야 하는 경우
② 객체를 파일이나 데이터베이스에 유지해야 하는 경우
4 직렬화 및 역직렬화 구현 방법
Serialization: $ str=serialize($zhangsan) ;
Deserialization: $duixiang=unserialize($str);
5, __sleep() 매직 메서드:
①객체 직렬화를 실행하면 자동으로 __sleep() 함수가 실행됩니다.
②__sleep() 함수는 배열을 반환해야 합니다. 배열에 없는 속성은 직렬화할 수 없습니다.
function __sleep (){
return array("name"," age"); //이름/나이 두 가지 속성만 직렬화할 수 있습니다.
}
6.__wakeup() 매직 메소드
①객체를 deserialize할 때 __wakeup() 메소드가 자동으로 호출됩니다.
②자동으로 호출되면 생성된 새 객체를 deserialize하는 데 사용됩니다. 속성이 재할당됩니다.
function __wakeup(){
$this -> name = "lee思";
}
4. 유형 제약
1. 유형 제약: 변수 추가를 의미합니다. type은 해당 데이터 유형만 저장하도록 이 변수를 제한하는 데 사용됩니다.
(이 작업은 강력한 형식의 언어에서 일반적입니다. PHP에서는 배열 및 개체의 형식 제약 조건만 구현할 수 있습니다.)
2 형식 제약 조건이 특정 클래스인 경우 이 클래스와 이 클래스의 하위 클래스 개체입니다. , 통과할 수 있습니다.
3. PHP에서는 형식 제약 조건이 함수의 형식 매개 변수에서만 발생할 수 있습니다.
class Person{}
class Student 확장 Person{}
function func(Person $p){ //제약 함수의 형식 매개변수, Person 클래스와 Person 하위 클래스만 허용
echo "1111" ;
echo $p -> name;
}
func(new Person()) √
func(new Student()) √
func("111");
은 new Person() 형식이며, 이를 "익명 개체"라고 부릅니다.
※※※기본 클래스: 상위 클래스
※※※파생 클래스: 하위 클래스
5. 매직 메소드 요약
1. __construct(): 생성자, 객체가 새로 생성되면 자동으로 호출됩니다.
2.__destruct(): 객체가 파괴될 때 자동으로 호출되는 소멸자입니다.
3.__get(): 클래스의 개인 속성에 액세스할 때 자동으로 호출됩니다. 읽기 속성 이름을 전달하고 $this->속성 이름을 반환합니다
4. __set(): 클래스의 비공개 속성에 값을 할당할 때 자동으로 호출됩니다. 설정해야 하는 속성 이름과 속성 값을 전달합니다.
5. __isset(): 객체의 비공개 속성을 감지하기 위해 isset()을 사용할 때 자동으로 호출됩니다. 감지된 속성 이름을 전달하고 isset($this -> 속성 이름)을 반환합니다.
6. __unset(): 객체의 비공개 속성을 삭제하기 위해 unset()을 사용할 때 자동으로 호출됩니다. 삭제된 속성 이름을 전달하고
7 메소드에서 unset($this -> 속성 이름)을 실행합니다. __toString(): 객체를 인쇄하기 위해 echo를 사용할 때 자동으로 호출됩니다. 객체를 인쇄할 때 표시하려는 콘텐츠를 반환합니다. 반환은 문자열이어야 합니다.
8. __call(): 클래스에서 정의되지 않거나 공개되지 않은 메서드를 호출할 때 자동으로 호출됩니다. 호출된 함수 이름과 매개변수 목록 배열을 전달합니다.
9. __clone(): clone 키워드를 사용하여 객체를 복제할 때 자동으로 호출됩니다. 이 함수는 새로 복제된 객체에 값을 초기화하고 할당하는 것입니다. __sleep(): 객체가 직렬화될 때 자동으로 호출됩니다. 배열을 반환하며, 배열의 값은 직렬화될 수 있는 속성입니다. __wakeup(): 객체가 역직렬화될 때 자동으로 호출됩니다. 새로 생성된 객체를 역직렬화하려면 초기화 및 할당을 수행합니다.
12. __autoload(): 함수는 클래스 외부에서 선언되어야 합니다. 선언되지 않은 클래스가 인스턴스화되면 자동으로 호출됩니다. 인스턴스화된 클래스 이름을 전달하면 해당 클래스 파일이 클래스 이름을 사용하여 자동으로 로드될 수 있습니다.
1. 추상 메소드란 무엇인가요? 2.추상 클래스란 무엇인가요? 3. 추상 클래스에 대한 참고 사항: 4. 하위 클래스가 추상 클래스를 상속하는 경우 하위 클래스가 추상 클래스가 아닌 한 하위 클래스는 상위 클래스의 모든 추상 메서드를 재정의해야 합니다. 5. 추상 클래스를 사용하는 역할은 무엇인가요?
1. 인터페이스 2. 3. 인터페이스에서는 변수를 선언할 수 없으며, 속성만 사용할 수 있습니다. ! ! 4. 인터페이스는 확장 키워드를 사용하여 인터페이스를 상속할 수 있습니다! 5를 확장합니다. 클래스는 Implements 키워드를 사용하여 인터페이스를 구현할 수 있습니다! ※[인터페이스 && 추상 클래스의 차이점] 2. 다형성 2. 다형성을 달성하는 데 필요한 방법: |
위 내용은 PHP의 객체지향에 대한 나의 이해에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

드림위버 CS6
시각적 웹 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.
