Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa] string
Forum PHP.pl > Inne > Oceny
Sokal
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 ;]
tiraeth
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 ?
mike
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?
Moli
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
Sokal
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
mike
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.
Sokal
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
mike
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.
Sokal
I co ? Może powiesz, że Twój sposób jest wygodniejszy?
mike
Szybszy i bardziej podatny na modyfikacje.
Sokal
Czyli według Ciebie oop jest dla lamerów, a programowanie proceduralne dla pro?
kwiateusz
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
Speedy
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. ?>
mike
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.
SongoQ
@Sokal Moze warto zaznajomic się z sensem stosowania takiej klasy w C++ a potem pomyslec czy aby w PHP takie cos jest potrzebne.
Sokal
@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
SHiP
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.
mike
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).
Sokal
No to właśnie mówię, że to można poprawić, jaki problem?
Dobra, kończymy topic.
mike
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.
php programmer
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,
Sokal
@mike
To co? Mam czekać na 20 następnych postów, że moja klasa jest be?
menic
A nóż sie znajdzie ktoś kto to pochwali biggrin.gif
Moze warto poczekać tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.