2021年3月13日 星期六

PHP 靜態屬性與匿名類別

設定目標:
  • 了解 PHP 靜態屬性的用法
  • 了解 PHP 匿名類別概念與應用方法

靜態屬性概念與使用方法
  1. 靜態屬性(static)
    • 作用:
      • 用於不會改變的類別屬性與方法
      • 不需要實例化產生物件,直接呼叫類別即可使用
    • 例:MathRate.php (計算複利用的方法)
      <?php
      class MathRate{
        public static function ComplexRate($principal,$yearRate,$period,$years){
           $result = 0;
           $result =  $principal * pow((1 + ((float)$yearRate/$period)),($period*$years));
           return $result;
        } 
      }
      ?>
      
    • 利用一個 demo4.php 來實現上述程式:
      <?php
        include "MathRate.php";
        echo MathRate::ComplexRate(1000,0.18,12,3);
      ?>
      
匿名類別觀念與應用
  1. 匿名類別(Anonymous class)
    • 作用
      • 有些類別用完即丟,沒有需要一直存在,即可使用匿名類別,減輕程式的複雜程度!
    • 範例 : Application.php
      <?php
      interface Logger {
        public function log(string $msg);
      }
      class Application {
        private $logger;
        public function getLogger(): Logger {
          return $this->logger;
        }
        public function setLogger(Logger $logger) {
          $this->logger = $logger;
        }
      }
      $app = new Application;
      // 使用 new class 建立匿名類別
      $app->setLogger(new class implements Logger {
        public function log(string $msg) {
          print($msg);
        }
      });
      
      $app->getLogger()->log("這是一個匿名類別的例子");
      ?>
      

本章練習:
  • 寫個疫苗的匿名類別,讓你的 dog 以及 cat 接種疫苗!
  • 寫個計算寵物一年花費的費用計算靜態程式,算一下你的寵物一年的花費!