php教程 PHP开发 PHP 개체, 패턴 및 사례에 대한 고급 기능 분석

PHP 개체, 패턴 및 사례에 대한 고급 기능 분석

Dec 14, 2016 am 10:37 AM

이 기사의 예에서는 PHP 객체 지향 프로그래밍의 고급 기능을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.

고급 기능

포함:

1. 정적 메서드 및 속성(객체 대신 클래스를 통해 데이터 및 함수에 액세스)
2. 추상 클래스 및 인터페이스(설계와 구현 분리)
3. 오류 처리(예외)
4. 최종 클래스 및 메서드(제한된 상속)
5. 🎜>6. 파괴 방법(객체 파괴 전 정리)
7. 객체 복제(객체 복사본 생성)
8. 객체를 문자열로 구문 분석

PS, 읽는 법을 배우세요. 메모리에서 다른 관점에서 코드를 살펴보세요. 컴퓨터의 미세한 세계를 상상해 보세요.

정적 메서드의 작은 예

<?php
class StaticExample{
  static public $aNum = 10;
  static public function sayHello(){
    print "hello";
  }
}
print StaticExample::$aNum."<br/>";
StaticExample::sayHello();
로그인 후 복사

팁:

1. 정적 메서드는 클래스의 일반 속성에 액세스할 수 없습니다. 객체에 대한 것이지만 정적 속성에 액세스할 수 있습니다.

2. 객체에서는 정적 메서드를 호출할 수 없으므로 정적 메서드에서는 의사 변수 $this를 사용할 수 없습니다.

정적 메소드의 대표적인 예

<?php
class ShopProduct{
  private $title;
  private $producerMainName;
  private $producerFirstName;
  protected $price;
  private $discount = 0;
  private $id = 0;
  function __construct($title,$firstName,$mainName,$price){
    $this->title = $title;
    $this->producerFirstName = $firstName;
    $this->producerMainName = $mainName;
    $this->price = $price;
  }
  public function setID($id){
    $this->id = $id;
  }
  public static function getInstance($id,PDO $pdo){
    $query = "select * from products where id= &#39;$id&#39;";
    $stmt = $pdo->query($query);
    $row = $stmt->fetch();
    if(empty($row)){
      return null;
    }
    if($row[&#39;type&#39;] == "book"){
      $product = new BookProduct($row[&#39;title&#39;],
        $row[&#39;firstname&#39;],
        $row[&#39;mainname&#39;],
        $row[&#39;price&#39;],
        $row[&#39;numpages&#39;]
        );
    }else if($row[&#39;type&#39;] == "cd"){
      $product = new CdProduct($row[&#39;title&#39;],
        $row[&#39;firstname&#39;],
        $row[&#39;mainname&#39;],
        $row[&#39;price&#39;],
        $row[&#39;playLength&#39;]
        );
    }else{
      $product = new ShopProduct($row[&#39;title&#39;],
        $row[&#39;firstname&#39;],
        $row[&#39;mainname&#39;],
        $row[&#39;price&#39;]
        );
    }
    $product->setId($row[&#39;id&#39;]);
    $product->setDiscount($row[&#39;discount&#39;]);
    return $product;
  }
  public function getProducerFirstName(){
    return $this->producerFirstName;
  }
  public function getProducerMainName(){
    return $this->producerMainName;
  }
  public function setDiscount($num){
    $this->discount = $num;
  }
  public function getDiscount(){
    return $this->discount;
  }
  public function getTitle(){
    return $this->title;
  }
  public function getPrice(){
    return ($this->price - $this->discount);
  }
  function getProducer(){
    return $this->producerFirstName." ".$this->producerMainName;
  }
  function getSummaryLine(){
    $base = "$this->title({$this->producerMainName},";
    $base .= "{$this->producerFirstName})";
    return $base;
  }
}
class CdProduct extends ShopProduct{
  private $playLength;
  function __construct($title,$firstName,$mainName,$price,$playLength){
    parent::__construct($title,$firstName,$mainName,$price);//继承父类的构造函数
    $this->playLength = $playLength;
  }
  function getPlayLength(){
    return $this->playLength;
  }
  function getSummaryLine(){
    $base = parent::getSummaryLine();
    $base .= ":playing time {$this->playLength}";
    return $base;
  }
}
class BookProduct extends ShopProduct{
  private $numPages = 0;
  function __construct($title,$firstName,$mainName,$price,$numPages){
    parent::__construct($title,$firstName,$mainName,$price);
    $this->numPages = $numPages;
  }
  function getnumPages(){
    return $this->numPages;
  }
  function getSummaryLine(){
    $base = parent::getSummaryLine();
    $base .= ":page count {$this->numPages}";
    return $base;
  }
}
$dsn = "sqlite:C:/Users/Administrator/Desktop/shop.db";
$pdo = new PDO($dsn,null,null);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$obj = ShopProduct::getInstance(1,$pdo);
echo $obj->getSummaryLine();
로그인 후 복사

이 글이 PHP 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다. . 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

WeChat의 방해금지 모드는 무엇을 합니까? WeChat의 방해금지 모드는 무엇을 합니까? Feb 23, 2024 pm 10:48 PM

WeChat 방해금지 모드는 무엇을 의미합니까? 요즘 스마트폰의 인기와 모바일 인터넷의 급속한 발전으로 인해 소셜 미디어 플랫폼은 사람들의 일상 생활에 없어서는 안될 부분이 되었습니다. WeChat은 중국에서 가장 인기 있는 소셜 미디어 플랫폼 중 하나이며 거의 모든 사람이 WeChat 계정을 가지고 있습니다. 우리는 위챗을 통해 친구, 가족, 동료들과 실시간으로 소통하고, 삶의 모든 것을 공유하고, 서로의 현재 상황을 배울 수 있습니다. 그러나 이 시대에 우리는 또한 정보의 과잉과 개인정보 유출의 문제에 필연적으로 직면하게 됩니다. 특히 집중하거나 집중해야 하는 사람들에게는 더욱 그렇습니다.

iPhone에서 절전 모드는 무엇에 사용됩니까? iPhone에서 절전 모드는 무엇에 사용됩니까? Nov 04, 2023 am 11:13 AM

iOS 기기에서는 오랫동안 건강 앱을 사용하여 수면 패턴 등을 추적할 수 있었습니다. 그런데 자고 있는 동안 알림으로 방해를 받으면 짜증이 나지 않나요? 이러한 알림은 관련성이 없으므로 그 과정에서 수면 패턴을 방해할 수 있습니다. 방해금지 모드는 잠자는 동안 주의가 산만해지는 것을 피할 수 있는 좋은 방법이지만, 밤에 받는 중요한 전화와 메시지를 놓칠 수 있습니다. 고맙게도 여기에서 절전 모드가 시작됩니다. 이에 대해 자세히 알아보고 iPhone에서 사용하는 방법을 알아보세요. iPhone에서 수면 모드는 어떤 역할을 합니까? 수면 모드는 "건강" 앱의 수면 일정에 따라 자동으로 활성화되는 iOS의 전용 집중 모드입니다. 알람을 설정하는 데 도움이 됩니다.

iPhone에서 방해 금지 모드가 작동하지 않음: 수정 iPhone에서 방해 금지 모드가 작동하지 않음: 수정 Apr 24, 2024 pm 04:50 PM

방해 금지 모드에서 전화를 받는 것조차 매우 짜증나는 경험이 될 수 있습니다. 이름에서 알 수 있듯이 방해 금지 모드는 모든 수신 전화 알림과 이메일, 메시지 등의 알림을 끕니다. 다음 솔루션 세트를 따라 문제를 해결할 수 있습니다. 수정 1 – 초점 모드 활성화 휴대폰에서 초점 모드를 활성화합니다. 1단계 – 위에서 아래로 스와이프하여 제어 센터에 액세스합니다. 2단계 – 다음으로 휴대폰에서 "초점 모드"를 활성화합니다. 집중 모드는 전화기에서 방해 금지 모드를 활성화합니다. 수신 전화 알림이 전화기에 표시되지는 않습니다. 수정 2 - 초점 모드 설정 변경 초점 모드 설정에 문제가 있는 경우 이를 수정해야 합니다. 1단계 – iPhone 설정 창을 엽니다. 2단계 – 다음으로 집중 모드 설정을 켭니다.

epc+o 모드는 무엇을 의미합니까? epc+o 모드는 무엇을 의미합니까? Nov 09, 2022 am 10:54 AM

epc+o 모델은 설계, 조달 등을 통합하는 일반적인 계약 프레임워크를 의미합니다. 이는 EPC에서 파생된 일부 운영 링크입니다. 즉, 건설 기간 동안 일반 계약자는 전통적인 의미의 설계 작업을 수행해야 합니다. 또한 운영 기간 동안 모든 유지 관리 작업도 수행해야 합니다. 이 모델은 많은 프로젝트의 운영 효율성을 크게 향상시키고 운영 비용을 빠르게 절감할 수 있습니다.

Windows 10/11에서 S 모드를 종료하는 방법 Windows 10/11에서 S 모드를 종료하는 방법 Aug 03, 2023 pm 08:17 PM

Windows S 모드는 Microsoft Store에서만 앱 설치를 허용하여 향상된 보안 및 성능을 제공하도록 설계되었습니다. 이 기능은 맬웨어를 방지하고 안전한 컴퓨팅 환경을 보장하는 데 도움이 되지만 Microsoft Store가 아닌 소스에서 응용 프로그램을 설치하려는 사용자를 제한할 수 있습니다. 이러한 상황에 처해 있고 Windows 10/11에서 S 모드를 종료하는 방법에 대해 계속 고민한다면 올바른 위치에 오신 것입니다. 두 가지 다른 방법을 사용하여 Windows 10/11에서 전환하는 방법을 안내해 드리겠습니다. S 모드로 전환하면 어디에서나 자유롭게 앱을 설치할 수 있습니다. Windows에서 S 모드를 전환하는 방법 알아보기

iPhone 15 Pro: 상태 표시줄에서 무음 모드 기호를 제거하는 방법 iPhone 15 Pro: 상태 표시줄에서 무음 모드 기호를 제거하는 방법 Sep 24, 2023 pm 10:01 PM

iPhone 15 Pro 및 iPhone 15 Pro Max 모델에서 Apple은 볼륨 버튼 위의 기존 벨소리/무음 스위치를 대체하는 물리적으로 프로그래밍 가능한 작업 버튼을 도입했습니다. 동작 버튼은 여러 가지 다른 기능을 수행하도록 프로그래밍할 수 있지만 무음 모드와 벨소리 모드 사이를 전환하는 기능은 사라지지 않습니다. 기본적으로 작업 버튼을 길게 누르면 장치가 조용해지고 버튼의 촉각 피드백이 세 번 깜박입니다. 두 iPhone 15 Pro 모델 모두 상태 표시줄의 시간 옆에 줄이 그어진 벨 기호가 표시되어 무음/무음 모드가 활성화되었음을 나타내며, 동작 버튼을 다시 길게 눌러 기기의 음소거를 해제할 때까지 이 상태가 유지됩니다. iPhone을 무음 모드로 설정하고 싶은 경우

iOS 17의 대기 모드 사용 안내 iOS 17의 대기 모드 사용 안내 Aug 22, 2023 pm 04:01 PM

iOS17이 설치된 iPhone에 대기 모드가 추가되었습니다. 이 가이드는 iPhone에서 이 기능을 사용하는 방법을 보여주기 위한 것입니다. 대기 모드는 iPhone을 역동적이고 항상 켜져 있는 스마트 디스플레이로 바꿔주는 획기적인 기능입니다. 충전 중에 iPhone을 옆으로 눕혀 놓으면 대기 모드가 활성화됩니다. 이 모드는 현재 시간, 지역 날씨 업데이트, 좋아하는 사진의 슬라이드쇼, 음악 재생 컨트롤 등을 포함하되 이에 국한되지 않는 다양한 유용한 위젯을 아름답게 보여줍니다. 이 모드의 중요한 장점은 알림을 표시하여 사용자가 iPhone을 완전히 깨우지 않고도 알림을 보고 참여할 수 있다는 것입니다. 대기 모드를 사용하는 방법 대기 모드가 제대로 작동하려면 iPhone이 실행 중이어야 합니다.

'Notepad++ 다크 모드'와 'Notepad++ 다크 테마'를 활성화하는 방법은 무엇입니까? 'Notepad++ 다크 모드'와 'Notepad++ 다크 테마'를 활성화하는 방법은 무엇입니까? Oct 27, 2023 pm 11:17 PM

Notepad++ 다크 모드 v8.0에는 매개 변수가 없으며 Notepad++는 가장 유용한 텍스트 편집기입니다. Windows 10에서 실행되는 모든 앱은 다크 모드를 지원합니다. Chrome, Firefox, Microsoft Edge와 같은 웹 브라우저의 이름을 지정할 수 있습니다. Notepad++에서 작업하는 경우 기본 흰색 배경이 눈을 아프게 할 수 있습니다. 개발자는 Notepad++ 버전 8에 다크 모드를 추가했습니다. 이를 켜는 방법은 다음과 같습니다. Windows 11/10용 메모장 활성화 ++ 다크 모드 메모장 실행 ++ "설정" > "기본 설정" > "다크 모드"를 클릭하고 "다크 모드 활성화"를 선택하여 메모장을 다시 시작하세요.

See all articles