Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] optymalny zapis
S3L41N
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


Witam, poszukuję optymalnego sposobu na zapis poniższej funkcji (metoda w klasie, której nie wklejam):

  1. public function __get($key)
  2. {
  3. if (isset($this->$key))
  4. $value = $this->$key;
  5. elseif (isset($this->data[$key]))
  6. $value = $this->data[$key];
  7. else
  8. $value = NULL;
  9. return $value;
  10. }


Gdyby w isset() można było dokonać przypisania, to całość sprowadzałaby się do:

  1. public function __get($key)
  2. {
  3. return (isset($value = $this->$key) OR isset($value = $this->data[$key])) ? $value : NULL;
  4. }


Niestety się nie da. Ma ktoś może jakiś pomysł jak to zoptymalizować?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
S3L41N
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


No dobrze, ale są jakieś konkretne wytyczne kiedy używać jednego zapisu, a kiedy drugiego?
Których z zapisów jest bardziej poprawny, czytelny i zalecany w następujących sytuacjach?
Sytuacja 1:
  1. //1.1
  2. $syshelpers = file_exists($syspath = trim(FRAMEWORKSDIR.'/'.HELPERSDIR, '/')) ? array_slice(scandir($syspath), 2) : array();
  3. //1.2
  4. if (file_exists($syspath = trim(FRAMEWORKSDIR.'/'.HELPERSDIR, '/')))
  5. $syshelpers = array_slice(scandir($syspath), 2);
  6. else
  7. $syshelpers = array();
  8. //1.3
  9. $syshelpers = array();
  10. if (file_exists($syspath = trim(FRAMEWORKSDIR.'/'.HELPERSDIR, '/')))
  11. $syshelpers = array_slice(scandir($syspath), 2);

Sytuacja 2:
  1. //2.1
  2. $type = (substr($type, -1) == 'y') ? substr($type, 0, -1).'ies' : $type.'s';
  3. //2.2
  4. if (substr($type, -1) == 'y')
  5. $type = substr($type, 0, -1).'ies';
  6. else
  7. $type = $type.'s';

Sytuacja 3:
  1. //3.1
  2. return (isset($this->$key) OR isset($this->data[$key])) ? TRUE : FALSE;
  3. //3.2
  4. if (isset($this->$key) OR isset($this->data[$key]))
  5. return TRUE;
  6. return FALSE;
  7. //3.3
  8. if (isset($this->$key) OR isset($this->data[$key]))
  9. return TRUE;
  10. else
  11. return FALSE;

Sytuacja 4:
  1. //4.1
  2. return (isset($this->$key) ? $this->$key : (isset($this->data[$key]) ? $this->data[$key] : NULL));
  3. //4.2
  4. return (isset($this->$key) ? $this->$key :
  5. (isset($this->data[$key]) ? $this->data[$key] :
  6. NULL));
  7. //4.3
  8. if (isset($this->$key))
  9. return $this->$key;
  10. elseif (isset($this->data[$key])
  11. return $this->data[$key];
  12. else
  13. return NULL;
  14. //4.4
  15. if (isset($this->$key))
  16. return $this->$key;
  17. else if (isset($this->data[$key])
  18. return $this->data[$key];
  19. else
  20. return NULL;
  21. //4.5
  22. if (isset($this->$key))
  23. return $this->$key;
  24. if (isset($this->data[$key])
  25. return $this->data[$key];
  26. return NULL;

Sytuacja 5:
  1. //5.1
  2. return isset(self::$instance) ? self::$instance : self::$instance = new self;
  3. //5.2
  4. if (isset(self::$instance))
  5. return self::$instance;
  6. else
  7. return self::$instance = new self;
  8. //5.3
  9. if (isset(self::$instance))
  10. return self::$instance;
  11. return self::$instance = new self;
  12. //5.4
  13. if (!isset(self::$instance))
  14. self::$instance = new self;
  15. return self::$instance;

Które z nich, a może jakieś inne są najbardziej poprawne?
Go to the top of the page
+Quote Post

Posty w temacie
- S3L41N   [php] optymalny zapis   2.08.2010, 17:34:30
- - zelu   [PHP] pobierz, plaintext return isset( $this-...   2.08.2010, 17:40:06
- - Wicepsik   [PHP] pobierz, plaintext return $this->$key ? $...   2.08.2010, 17:41:55
|- - zelu   Cytat(Wicepsik @ 2.08.2010, 18:41:55 ...   2.08.2010, 17:49:39
- - S3L41N   No zgadza się, isset()-y celowo dałem. Dzięki za p...   2.08.2010, 17:52:59
- - Crozin   Od kiedy to optymalny równa się maksymalnie krótki...   2.08.2010, 17:54:55
|- - zelu   Cytat(Crozin @ 2.08.2010, 18:54:55 ) ...   2.08.2010, 18:02:56
|- - skarabe.pl   Cytat(zelu @ 2.08.2010, 19:02:56 ) A ...   2.08.2010, 18:13:28
- - zelu   Nie wiem dlaczego tak jest Tak wynikało z moich t...   2.08.2010, 18:14:22
|- - skarabe.pl   Cytat(zelu @ 2.08.2010, 19:14:22 ) Ni...   2.08.2010, 18:21:08
|- - fifi209   Cytat(skarabe.pl @ 2.08.2010, 18:21:0...   2.08.2010, 18:24:53
|- - skarabe.pl   Cytat(fifi209 @ 2.08.2010, 19:24:53 )...   2.08.2010, 18:47:27
|- - fifi209   Cytat(skarabe.pl @ 2.08.2010, 18:47:2...   2.08.2010, 23:53:27
|- - kapuch   Cytat(fifi209 @ 3.08.2010, 00:53:27 )...   3.08.2010, 00:00:41
|- - fifi209   Cytat(kapuch @ 3.08.2010, 00:00:41 ) ...   3.08.2010, 00:02:41
- - croc   Cytat(zelu @ 2.08.2010, 10:02:56 ) A ...   2.08.2010, 18:32:49
- - Crozin   Zacznijmy od tego, że jak masz taką konstrukcję to...   2.08.2010, 18:51:01
|- - skarabe.pl   Cytat(Crozin @ 2.08.2010, 19:51:01 ) ...   2.08.2010, 18:54:57
- - zelu   W Twojej wersji jak najbardziej zapis skrócony jes...   2.08.2010, 18:54:30
- - S3L41N   No dobrze, ważna jest czytelność kodu, a czy poniż...   2.08.2010, 23:30:23
- - Crozin   @fifi209, @kapuch: Chodziło o sytuację gdzie zależ...   3.08.2010, 00:08:34
- - S3L41N   No dobrze, ale są jakieś konkretne wytyczne kiedy ...   3.08.2010, 09:04:50
- - Crozin   No ileż można - który zapis wydaje Ci się najbardz...   3.08.2010, 11:24:22
- - S3L41N   No ok, to poprostu napisz, które zapisy Ty byś wyb...   3.08.2010, 11:58:54
- - attimo   Ja też wole 4. może i wdurgim kod jest krótszy pra...   3.08.2010, 12:04:20
- - S3L41N   attimo widzę, że chyba nie wczytałeś się w posta. ...   3.08.2010, 13:26:19
- - Crozin   #1[PHP] pobierz, plaintext $syspath = trim(FRA...   3.08.2010, 13:56:32


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 09:23