Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [klasa] string
Sokal
post
Post #1





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

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


Cześć (IMG:http://forum.php.pl/style_emoticons/default/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 ;]
Go to the top of the page
+Quote Post
tiraeth
post
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ?
Go to the top of the page
+Quote Post
mike
post
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
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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Sokal
post
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? (IMG:http://forum.php.pl/style_emoticons/default/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? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ten post edytował Sokal 20.08.2007, 11:38:52
Go to the top of the page
+Quote Post
mike
post
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
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? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
mike
post
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ś (IMG:http://forum.php.pl/style_emoticons/default/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
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?
Go to the top of the page
+Quote Post
mike
post
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
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?
Go to the top of the page
+Quote Post
kwiateusz
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
mike
post
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
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
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
Go to the top of the page
+Quote Post
SHiP
post
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.
Go to the top of the page
+Quote Post
mike
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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? (IMG:http://forum.php.pl/style_emoticons/default/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
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.
Go to the top of the page
+Quote Post
mike
post
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
A czemu, 20 postów krytyki jest limitem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Troche to zabrzmiało dziecinnie z Twojej strony.
Go to the top of the page
+Quote Post
php programmer
post
Post #21





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Po za tym popatrz na taką sytuację,
z pewnych powodów ktoś z twojej firmy musi
przejąć twój kod, zmodyfikować go lub rozwinąć.
Ta osoba oczywiście zna standardowe funkcje
php do obsługi stringów,
a tu patrzy a tu jakieś dziwne funkcje,
najpierw musi się domyśleć jak działają
lub przeczytać twoją dokumentację
niepotrzebna strata czasu,
podczas gdy przy standardowych funkcjach php,
ani chwili się nie musi zastanawiać, gdyż zazwyczaj
zna parametry i sposób wywołania najczęściej
wykorzystywanych funkcji

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


OOP używasz jeśli ma to sens,

Ten post edytował php programmer 21.08.2007, 07:54:47
Go to the top of the page
+Quote Post
Sokal
post
Post #22





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

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


@mike
To co? Mam czekać na 20 następnych postów, że moja klasa jest be?
Go to the top of the page
+Quote Post
menic
post
Post #23





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


A nóż sie znajdzie ktoś kto to pochwali (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Moze warto poczekać (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 00:35