PHP __ get () en iyi uygulama

1 Cevap php

Ben bir karmaşık ve çok boyutlu diziyi saklayan bir PHP sınıfı var ve ben PHP5 en __ get yöntemini kullanmaya karar verdi bu dizi için bir arayüz olarak bireysel erişim yöntemlerinin yazmak yerine.

Ben bu sihirli erişimcilerini yazmaya başladı ben en iyi uygulamalar burada ne hiçbir fikrim yoktu o bana giydiğinde, o yüzden sorayım dedim. Içinde büyük bir if / else yapısı (olsun) ortak __ mi?

Ben başvuru için sınıfın küçük bir pasajı yer verdik:

<?php
   class Project {

      private $data; 

      public function __construct($d) {
         $this->data = $d;
      }

      public function __get($val) {
         if ($val === 'title')
            return $this->data['info']['projectName'];
         else if ($val === 'id')
            return $this->data['info']['projectID'];      
         else if ($val == 'health') {
            switch($this->data['info']['health']) {
               case 'OT':
               case 'NS':
               case 'LR':
                  return 'Low Risk&mdash;Healthy';
                  break;
               case 'CR':
                  return 'Critical Risk&mdash;Action Needed';
                  break;
               default:
                  return 'Unknown';            
            }
         }
      }
   }
?>

Sonra ben gibi veri erişim ediyorum:

$o = new Project($array);
echo $o->title; #etc

1 Cevap

Sonunda çoğunlukla alternatiflerin bir konudur. Bu nedenle, genellikle anahtar yapı kullanabilirsiniz. Özel duruma bağlı olarak, regex de çok yararlı olabilir.