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는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

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

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.
