PHP의 객체지향 프로그래밍에 대한 간략한 토론
이 글에서 공유한 내용은 PHP 객체지향 프로그래밍에 대한 간략한 논의입니다. 도움이 필요한 친구들이 참고할 수 있습니다
1. PHP 객체지향 프로그래밍의 기본 실습
rree2. PHP 고급 객체지향 프로그래밍 실습
지식 포인트: 클래스 상속, 메소드 재작성, 액세스 제어, 정적 키워드, 최종 키워드, 데이터 액세스, 인터페이스, 다형성, 추상 클래스
2.1, 클래스 상속: 키 확장 단어
예를 들어 운영자, 호스트는 인간과 동일한 행동 방식을 가지고 있지만 모두 다른 전문성을 가지고 있습니다. 따라서 프로그래밍할 때 상위 클래스를 만들고 상속해야 합니다.
<?php /* * 通过对象的编程方式,可将实现生活中的一切事物以对象的形式表现出来。便于理解、维护、扩展等; * 本示例:定义一个“人”类 * $name : 对象中的成员属性,在此类中表示人的姓名 * say() : 对象中的成员方法,在此类中表示人说话的方法 * $this : PHP中的伪变量,表示自身的类 * __construct() : php中的魔术方法,构造函数,在实例化类时自动执行 * __destruct() : php中的魔术方法,析构函数,当类调用完成后自动执行 */ class Human { public $name; public $sex; public $age; public function __construct($name,$sex,$age) { $this->name = $name; $this->sex = $sex; $this->age = $age; } public function say() { echo '大家好,我的名字叫'.$this->name.',今年'.$this->age.'岁,我的性别是'.$this->sex; } public function __destruct() { $this->name = null; $this->sex = null; $this->age = null; } } //实例化“人”类 $male = new Human("张三","男","20"); //调用“人”类说话的方法 $male->say(); //输出结果:大家好,我的名字叫张三,今年20岁,我的性别是男 ?>
2.2. 메소드 재작성: 하위 클래스는 상위 클래스의 메소드를 재작성합니다.
<?php /* * 创建一个“人”类做为父类,继承的子类都拥有其父类的成员属性、方法 */ class Human { public $name; public function say() { echo "父类说话的方法,姓名:".$this->name."\n"; } public function eat() { echo "父类吃饭的方法\n"; } } /* * 创建一个“运动员”类,继承“人”类 * extends : 关键字,继承某个类 */ class Sport extends Human { public $type; public function __construct($name,$type) { $this->name = $name; //给父类 $name 属性赋值 $this->type = $type; } public function run() { $this->say(); //调用父类“说话”的方法 echo "我在正跑步,我是一员".$this->type."运动员.....\n"; } } /* * 创建一个“主持人”类,继承“人”类 * extends : 关键字,继承某个类 */ class Host extends Human { public $television; public function __construct($name,$television) { $this->name = $name; $this->television= $television; } public function perform() { $this->eat(); //调用父类“吃饭”的方法 echo "我在正表演一个节目,我是".$this->television."电视台的一名主持人.....\n"; } } //实例化“运动员”类 $nba = new Sport("乔丹","篮球"); $nba->run(); //实例化“主持人”类 $tv = new Host("张三","北京卫视"); $tv->perform(); //输出结果: //父类说话的方法,姓名:乔丹 我在正跑步,我是一员篮球运动员..... //父类吃饭的方法 我在正表演一个节目,我是北京卫视电视台的一名主持人..... ?>
2.3 액세스 제어: 공개, 보호, 비공개 키워드: 정의 공용 멤버 속성 또는 메소드는 어디에서나 사용할 수 있습니다.
protected: 보호된 멤버 속성 또는 메소드를 정의하고, 클래스 자체 또는 하위 클래스에서만 사용할 수 있습니다.
private: 전용 멤버 속성 또는 메소드를 정의하고, 클래스 자체에서만 사용할 수 있습니다.
<?php class Human { public function say() { echo "父类说话的方法"; } } class Sport extends Human { //重写父类“说话”的方法 public function say() { echo "子类说话的方法"; } } $nba = new Sport(); $nba->say(); //输出结果:子类说话的方法 ?>
1) 정적 속성은 클래스의 공개 데이터를 저장하는 데 사용됩니다.
2) 정적 메서드에서는 정적 속성 또는 메서드만 액세스할 수 있으며 $this 의사 변수는 액세스할 수 없습니다.
3) 새 키워드를 통해 객체를 인스턴스화하지 않고도 정적 멤버에 액세스하고 사용할 수 있습니다.
<?php class Human { public $name; protected $sex; private $age; } //实例化对象,给公共属性赋值可正常输出结果,外部不能给protected、private受保护的成员属性赋值或使用 $worker = new Human(); $worker->name = "张三"; echo $worker->name; ?>
예: 1. 부모 클래스의 경우 "Eat" 메서드는 하위 클래스가 이를 재정의하는 것을 원하지 않습니다. 2. "Athletes" 클래스의 경우 하위 클래스를 생성하는 것을 원하지 않습니다.
<?php class Human { static $name = "张三"; static function say() { echo "我的姓名叫:".self::$name; } } //外部使用静态成员属性或方法 echo Human::$name; Human::say(); //输出结果:张三 我的姓名叫:张三 ?>
$this: 의사 변수, 클래스 자체를 나타내며 이 클래스와 상위 클래스의 멤버 속성과 메서드에 액세스할 수 있습니다.
self: 클래스의 정적 멤버 속성 또는 메소드에 액세스
parent: 상위 클래스의 멤버 속성 또는 메소드에 액세스
<?php class Human { final public function eat() { echo "父类吃饭的方法,不允许子类重写"; } } final class Sport extends Human { public function eat() { echo "子类吃饭的方法。此时程序将会报致命错误"; } } //创建一个类继承 Sport 这个类。此时程序也将会报致命错误。因为 Sport 类不允许再创建子类 class Student extends Sport { public $name; } //实例化 Sport 类 ,调用 eat() 方法 $nba = new Sport(); $nba->eat(); //实例化 Student 类 ,给 name 属性负值 $obj = new Student(); $obj->name = "张三"; //输出结果:Fatal error: Cannot override final method Human::eat() in ******.php on line 15 //Fatal error: Class Student may not inherit from final class (Sport) in ****.php on line 20 ?>
예를 들어 사람도 먹을 수 있고, 동물도 먹을 수 있고, 어떤 식물도 먹을 수 있지만 먹는 방식이 다르기 때문에 이때 인터페이스 클래스를 정의해야 하며, 구체적인 방법은 다음과 같습니다. 메소드는 서브클래스에 의해 구현됩니다.
인터페이스 키워드 정의: 인터페이스
인터페이스 메소드 키워드 구현: Implements
<?php class Human { static $name = "张三"; } class Sport extends Human { static function getParentName() { echo parent::$name; } public function get() { self::getParentName(); } } $obj = new Sport(); $obj->get(); //输出结果:张三 ?>
위의 예에서 ICanEat 인터페이스는 eat() 메서드를 정의하고 원숭이는 바나나를 먹습니다. 그들은 모두 "먹는" 메소드를 구현하지만 먹을 때 서로 다른 동작을 합니다. 이를 다형성이라고 합니다.
예를 들어, 인간과 동물 모두 먹는 방법과 호흡하는 방법이 있습니다. 먹는 것 외에는 호흡하는 방법이 동일합니다. 이 경우 이를 구현하려면 추상 클래스를 정의해야 합니다.
추상 클래스 키워드 정의: abstract
<?php //定义一个接口类,有吃饭的方法,但不具体实现。 interface ICanEat { public function eat($food); } class Human implements ICanEat { //eat()方法必须由子类来实现,否则程序将报致命错误 public function eat($food) { echo "I'm eating ".$food; } } class Animal implements ICanEat { public function eat($food) { echo "It's eating ".$food; } } //实例化一个“人”类 $people = new Human(); $people->eat('rice'); //实例化一个“动物”类 $monkey = new Animal(); $monkey->eat('banana'); //输出结果:I'm eating rice // It's eating banana ?>
3. PHP 객체 지향 프로그래밍의 특수 사례 PHP 언어와 관련된 몇 가지 매직 메서드:
<?php //定义一个抽象类,里面有吃饭和呼吸的方法。呼吸方法需要在抽象类中具体实现 abstract class ICanEat { abstract function eat($food); public function breath() { echo 'Breath use the air...'; } } class Human extends ICanEat { public function eat($food) { echo "I'm eating ".$food; $this->breath(); } } //实例化“人”类 $people = new Human(); $people->eat('rice'); //输出结果:I'm eating rice Breath use the air... ?>
PHP 객체 지향 참고 사항 - 123 그림된 정적 속성 및 정적 메서드
위 내용은 PHP의 객체지향 프로그래밍에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

Python은 초보자에게 문제 해결 능력을 부여합니다. 사용자 친화적인 구문, 광범위한 라이브러리 및 변수, 조건문 및 루프 사용 효율적인 코드 개발과 같은 기능을 제공합니다. 데이터 관리에서 프로그램 흐름 제어 및 반복 작업 수행에 이르기까지 Python은 제공합니다.
