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
zelu
post
Post #2





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


Nie wiem dlaczego tak jest (IMG:style_emoticons/default/winksmiley.jpg) Tak wynikało z moich testów (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
skarabe.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 49
Dołączył: 29.07.2010

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


Cytat(zelu @ 2.08.2010, 19:14:22 ) *
Nie wiem dlaczego tak jest ;) Tak wynikało z moich testów ;)

Trochę bez sensu, no ale :)
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(skarabe.pl @ 2.08.2010, 18:21:08 ) *
Trochę bez sensu, no ale (IMG:style_emoticons/default/smile.gif)

Dlaczego bez sensu? Czy coś co jest mniej czytelne, musi być wydajniejsze? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
skarabe.pl
post
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 49
Dołączył: 29.07.2010

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


Cytat(fifi209 @ 2.08.2010, 19:24:53 ) *
Dlaczego bez sensu? Czy coś co jest mniej czytelne, musi być wydajniejsze? :)

Nie nie nie nie - czytelność jest kwestią gustu, bez sensu jest tylko to, że zapis:
  1. $var = condition ? true : false;

który znaczy dokładnie to samo co:
  1. if (condition) {
  2. $var = true;
  3. } else {
  4. $var = false;
  5. }

może być wolniejszy od tego drugiego. Tak przy okazji - nie wyobrażam sobie zapisania skryptu typu:
  1. $zmienna_1 = isset($_POST['zmienna_1']) ? $_POST['zmienna_1'] : '';
  2. $zmienna_2 = isset($_POST['zmienna_2']) ? $_POST['zmienna_2'] : '';
  3. $zmienna_3 = isset($_POST['zmienna_3']) ? $_POST['zmienna_3'] : '';
  4. /* ... */
  5. $zmienna_100 = isset($_POST['zmienna_100']) ? $_POST['zmienna_100'] : '';

W taki sposób:
  1. if (isset($_POST['zmienna_1'])) {
  2. $zmienna_1 = $_POST['zmienna_1'];
  3. } else {
  4. $zmienna_1 = '';
  5. }
  6. if (isset($_POST['zmienna_2'])) {
  7. $zmienna_2 = $_POST['zmienna_2'];
  8. } else {
  9. $zmienna_2 = '';
  10. }
  11. if (isset($_POST['zmienna_3'])) {
  12. $zmienna_3 = $_POST['zmienna_3'];
  13. } else {
  14. $zmienna_3 = '';
  15. }
  16. /* ... */
  17. if (isset($_POST['zmienna_100'])) {
  18. $zmienna_100 = $_POST['zmienna_100'];
  19. } else {
  20. $zmienna_100 = '';
  21. }

nawet w tej, w sposób oczywisty mniej wydajnej wersji:
  1. $zmienna_1 = '';
  2. if (isset($_POST['zmienna_1'])) {
  3. $zmienna_1 = $_POST['zmienna_1'];
  4. }

Dla mnie to pierwsze jest znacznie bardziej czytelne. Ale jak już napisałem - kwestia gustu.
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(skarabe.pl @ 2.08.2010, 18:47:27 ) *
Nie nie nie nie - czytelność jest kwestią gustu, bez sensu jest tylko to, że zapis:
Dla mnie to pierwsze jest znacznie bardziej czytelne. Ale jak już napisałem - kwestia gustu.

Jeżeli robisz to w sposób, który przedstawiłeś na forum to nie skomentuję...
Co do wydajności - wrzuć sobie w pętlę z 100 tysięcy raz, wyciągnij czasy, podaj czas średni i porównaj - może się mylimy... (IMG:style_emoticons/default/smile.gif) Ja nie idę w zapartego, że jest tak jak My piszemy i nie podważam za wszelką cenę Twoich teorii.
Cytat(skarabe.pl @ 2.08.2010, 18:54:57 ) *
Ale to trochę tak jak z ++$i zamiast $i++ - nikt nikomu nie każe przeglądać wszystkich swoich skryptów i zamieniać jedno na drugie.


No i tutaj byś się zdziwił, jest różnica czy używasz ++$i czy $i++
Miłego czytania
Go to the top of the page
+Quote Post
kapuch
post
Post #7





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


Cytat(fifi209 @ 3.08.2010, 00:53:27 ) *
No i tutaj byś się zdziwił, jest różnica czy używasz ++$i czy $i++
Miłego czytania

wystarczy ze wklepie echo (IMG:style_emoticons/default/winksmiley.jpg)
  1. $i = 0;
  2. echo $i++; // 0
  3. echo $i; // 1
  4. echo ++$i; // 2


Ten post edytował kapuch 3.08.2010, 00:01:40
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: 5.10.2025 - 16:03