Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [klasa] string
Sokal
post 20.08.2007, 01:33:20
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


Cześć smile.gif

Napisałem klasę do obsługi stringów. Wzorowałem się na klasie string w C++. Dodałem też trochę funkcji PHP-owskich.
Oto ona: http://rafb.net/p/4Ybq2A44.html

Proszę o oceny ;]


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
tiraeth
post 20.08.2007, 01:56:36
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Jaka w tym jest użyteczność? W czym mógłbym zastosować tą klasę i czym ona się różni od standardowych funkcji w PHP smile.gif ?
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 05:55:24
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Zero użyteczności.
Strasznie mi się nie podoba, typowy przykład bezsensownego wynajdywania koła na nowo.

P.S.
Po co używasz @access w dokumentacji składowych klasy?
Go to the top of the page
+Quote Post
Moli
post 20.08.2007, 11:09:40
Post #4





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Jak już wspomnieli przed mówcy, 975 lini bez użytecznego kodu. A tak po za tym, to dziwię się, że chciało Ci się to pisać smile.gif
Go to the top of the page
+Quote Post
Sokal
post 20.08.2007, 11:26:46
Post #5





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


Hm. Nie wiem czy użyteczność zerowa... Tak samo jak z klasą mysqli i funkcjami mysqli_*(). Po co jest ta klasa skoro są funkcje? snitch.gif

Zaraz pokażę w czym jest ona lepsza... ;]

  1. <?php
  2. $s = new string('to jest jakis tam tekst');
  3. $s->insert(17, ' fajny'); // string bedzie teraz wygladal tak: 'to jest jakis tam fajny tekst'
  4. $s->erase(2, 5); // string: 'to jakis tam fajny tekst'
  5. $s->resize(8); // string: 'to jakis'
  6. ?>


To jest tylko taki przykład ;] Można jeszcze więcej rzeczy zrobić... Wszystko co w klasie string w C++
Zrobilibyście to za pomocą funkcji php? snitch.gif

Ten post edytował Sokal 20.08.2007, 11:38:52


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 11:39:11
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


A poza tym większość metod jest źle napisana.Na przykład takie sha1(). Powinno zwracać zmieniona wartość a nie zminiać pole obiektu.Takich dziecinnych błędów jets więcej.
Cytat(mike @ 20.08.2007, 12:37:24 ) *
Powinno zwracać zmieniona wartość a nie zminiać pole obiektu.Takich dziecinnych błędów jets więcej.
Klasa jest dla innego stylu kodowania. Częśc osób woli obiektowo.Niestety Twój obiekt, dla wykonania tych samych operacji wymaga wiele więcej czynności (w porównaniu z proceduralnym manilulowaniem stringami) a dodatkowo jets nakładką na natywne funkcje co dodatkowo zwalnia czas wykonywania tych operacji.
Go to the top of the page
+Quote Post
Sokal
post 20.08.2007, 11:44:30
Post #7





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


E, ja tą klasę zrobiłem w jeden niecały dzień ;]
W następnych wersjach bym poprawił to co działa źle... Ale po tych Waszych postach już mi się odechciało...

BTW.
Może będziemy pisać w PHP3? tongue.gif


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 11:46:24
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


P.S.
  1. <?php
  2. $s = new string('to jest jakis tam tekst');
  3. $s->insert(17, ' fajny'); // string bedzie teraz wygladal tak: 'to jest jakis tam fajny tekst'
  4. $s->erase(2, 5); // string: 'to jakis tam fajny tekst'
  5. $s->resize(8); // string: 'to jakis'
  6. ?>

  1. <?php
  2. $string = 'to jest jakis tam tekst';
  3. $string1 = substr($string, 0, 17) . ' fajny' . substr($string, 17);
  4. $string2 = str_replace($string, substr(2, 5));
  5. $string3 = substr($string, 0, 8);
  6. ?>

No faktycznie, tyyyyle zaoszczędziłeś tongue.gif

Klasa nadaje się dla osób, które nie potrafią manipulować funkcjami ciągów. Choć z drugiej strony osoby takie na dźwięk słowa klasa zaczynają szukac innego zawodu.
Wydaje mi się, że doświadczeni programiści nie skorzystali by z takiej klasy. No chyba, że automatyzowałaby czynności faktycznie skomplikowane.
A nie nakładała swje rzeczy na scha1(), str_replace(), substr(), ... zmianiający tylko nazwy.
Go to the top of the page
+Quote Post
Sokal
post 20.08.2007, 11:47:41
Post #9





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


I co ? Może powiesz, że Twój sposób jest wygodniejszy?


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 11:50:58
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Szybszy i bardziej podatny na modyfikacje.
Go to the top of the page
+Quote Post
Sokal
post 20.08.2007, 11:53:13
Post #11





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


Czyli według Ciebie oop jest dla lamerów, a programowanie proceduralne dla pro?


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
kwiateusz
post 20.08.2007, 11:55:31
Post #12


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




oop nie służy jako nakładka na natywne funkcje, klasy sa po to żeby wykonywac skomplikowane operacje, a nie to samo co potrafi funkcja tyle że zapis jest o kilka literek krótsze
Go to the top of the page
+Quote Post
Speedy
post 20.08.2007, 11:57:44
Post #13





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

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


Mike'owi chyba chodziło o to, że niepotrzebnie piszesz funkcje, które wywołują natywne funkcje PHP i nie robią nic więcej, a to jest bezużyteczne winksmiley.jpg.

Równie dobrze mógłbyś sobie napisać

  1. <?php
  2.  
  3. class mojaKlasa
  4. {
  5.  
  6. public function MojeSuperEcho($str)
  7. {
  8. echo $str;
  9. }
  10.  
  11. }
  12.  
  13. $obj = new mojaKlasa;
  14. $obj->MojeSuperEcho('Hello');
  15.  
  16. ?>


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 11:59:35
Post #14





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Sokal @ 20.08.2007, 12:53:13 ) *
Czyli według Ciebie oop jest dla lamerów, a programowanie proceduralne dla pro?
Odwrotnie.
OOP (tak jak ~kwiateusz wspomniał) jest między innymi po to by zaoszczędzić dużej ilości pracy, wykonując przezrozyście proste funkcje, które w tle robią dużo więcej.
Twoja klasa powoduje że trzeba wykonać więcej czynności do osiągnięcia bardzo banalnych i oczywistych rzeczy dostępnych dzięki natywnym funkcjom.

P.S.
Czy Ty na pewnoe wiesz po co jets klasa String w C++. Mam poważne wątpliwości.
Go to the top of the page
+Quote Post
SongoQ
post 20.08.2007, 12:00:48
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@Sokal Moze warto zaznajomic się z sensem stosowania takiej klasy w C++ a potem pomyslec czy aby w PHP takie cos jest potrzebne.


--------------------
Go to the top of the page
+Quote Post
Sokal
post 20.08.2007, 12:00:50
Post #16





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


@Speedy
Ale o to chodzi w mojej klasie, że używająć mojej klasy nie musisz za każdym razem podawać do funkcji stringu... Robisz to raz w konstruktorze, pozniej mozesz podmienic ja bodajze funkcja set()

//
Oczywiście, że wiem po co jest klasa string w C++
Chyba nie chcesz działać na tablicach znaków char ;P

Ten post edytował Sokal 20.08.2007, 12:02:26


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
SHiP
post 20.08.2007, 12:04:13
Post #17





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


I zastanawiam się czy nie da sie operowac na twoim obiekcie za pomoca natywnych funkcji php operujących na stringach
Rozwinięcie istniejących w php rzeczy byłoby dobre. Pisanie tego samego mija sie z celem.


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 12:09:30
Post #18





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Sokal @ 20.08.2007, 13:00:50 ) *
@Speedy
Ale o to chodzi w mojej klasie, że używająć mojej klasy nie musisz za każdym razem podawać do funkcji stringu... Robisz to raz w konstruktorze, pozniej mozesz podmienic ja bodajze funkcja set()
No to strzeliłeś sobie gola.
Bo jeśli to powyższe było Twojm celem to schrzaniłeś klasę na całej linii tongue.gif
Po naprawieniu błędów, będzie jeszcze mniej funkcjonalna.

Spójrz:
  1. <?php
  2.  
  3. $s = new string('to jest jakis tam tekst');
  4. $s->sha1();
  5. $s->insert(17, ' fajny');
  6. echo $s;
  7.  
  8. ?>
Jaki jest wynik? tongue.gif

Widzisz, w Twojej klaie też trzeba definiować coś wiele razy albo przepisac ją całą albo korzystać z wielu obiektów (prostota poszła do kosza).
Go to the top of the page
+Quote Post
Sokal
post 20.08.2007, 12:14:35
Post #19





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


No to właśnie mówię, że to można poprawić, jaki problem?
Dobra, kończymy topic.


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
mike
post 20.08.2007, 12:22:54
Post #20





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Problem jest w tym, że jeśli to poprawisz to będziesz musiał operowac na kilku obiektach String. Będziesz robił dokładnie to samo co ja w przykładowym kodzie napisanym proceduralnie.
Ale na dodatek będziesz wykonywał nakładke obiektową na funkcje natywne, co prostoty nie da żadnej a zwiąkszy czas wykonania kodu (niewiele, ale jednak zwiększy).

P.S.
Hehehe, nie ma aprobaty to kończymy wątek, tak tongue.gif
A czemu, 20 postów krytyki jest limitem tongue.gif Troche to zabrzmiało dziecinnie z Twojej strony.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:42