![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam, proszę o ocenę querybuildera.
Klasa nie jest w pełni przetestowana, ale chętnie już teraz poczytam wasze uwagi, krytykę, pochwały. Kod dostępny jest pod adresem http://skowronline.pl/qb/source.php a jutro postaram się wrzucić przykłady użycia. Pozrawiam -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Testy jednostkowe będą?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Rzuciłem okiem tylko pobieżnie na to (chwilowo brak czasu) ale od razu rzuciło mi się w oczy konstrukcje jak ta:
"\nSET" Czemu specjalnie dodajesz nowe linie do zapytan? Najlepiej jest unikać enterów w zapytaniach, a ty je spacjalnie wkładasz. Czy to ma służyć tylko temu, by potem robiąc echo $sql; można było ładnie zobaczyć jak zapytanie wygląda? Edit: tu masz blad: $direction_array = array('ASC, DESC'); powinno byc: $direction_array = array('ASC', 'DESC'); -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Testy jednostkowe będą? Raczej nie, przynajmniej nie teraz. @nospor wychwyciłem ten błąd wcześniej tylko nowej wersji nie wgrałem na serwer, a co do enterów to masz racje po to one są. Ale poprawie to, dzięki za uwagę. EDIT: zrobiłem up na nową wersję. Ten post edytował skowron-line 20.10.2010, 10:52:53 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja albo jestem jakiś nawiedzony, albo nie wiem co - wszędzie widzę wpływy Kohany
![]() ![]() Kod przejrzałem i co mi się rzuciło w oczy: Linia 71.
Dobrze by było jako domyślną wartość podstawiać '*', a nie ''. Linia 73. Czy to przypadkiem nie wywali błędu gdy $column będzie tablicą? trim() na tablicy? Linia 389.
Domyślną wartością dla $offset ładniej by wyglądał NULL, a nie pusty ciąg. Metody execute(), count(), first() tworzą nowe obiekty QueryResults wykonując za każdym razem zapytanie. Czyli by je wykonać i pobrać liczbę rekordów trzeba 2x wykonać to samo zapytanie. Brak linii bo się numerowanie skończyło ![]()
Nie rzutuj zwracanej wartości na stringa. Zwróć dokładnie to, co dostałeś. Wstawiasz inta to zwróć inta, a nie string (WHERE id = 1 jest DUŻO szybsze od WHERE id = '1'). * Teraz zauważyłem: numerowanie linii się rozjeżdża z racji różnicy wielkości czcionek :/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ja albo jestem jakiś nawiedzony, albo nie wiem co - wszędzie widzę wpływy Kohany To może się skończyć pobytem w miejscu odosobnienia ![]() Cytat smile.gif nie wmówisz mi, że kohanowa klasa Database nie była źródłem natchnienia Nie ma zamiaru wmawiać, nie powiem zaglądałem do Kohany ale również do Zend -a i innych FW.Cytat Czy to przypadkiem nie wywali błędu gdy $column będzie tablicą? trim() na tablicy? nie.Cytat Domyślną wartością dla $offset ładniej by wyglądał NULL, a nie pusty ciąg. Oczywiście poprawię to.Cytat Metody execute(), count(), first() tworzą nowe obiekty QueryResults wykonując za każdym razem zapytanie. Czyli by je wykonać i pobrać liczbę rekordów trzeba 2x wykonać to samo zapytanie. Wiele rzeczy wymaga poprawy i ponownego przemyślenia, i to są właśnie te rzeczy pisałem to tak na szybko bo potrzebne mi to było "na wczoraj" stąd też takie babole.Może coś warto dopisać, coś poprawić ![]() -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Domyślną wartością dla $offset ładniej by wyglądał NULL, a nie pusty ciąg. Raczej zero, nie null. Dodatkowo upraszcza to kod, bo nie trzeba przewidywać dwóch sytuacji (z i bez OFFSET).Niestety jak większość QB i ten spisze się co najwyżej przy najprostszych zapytaniach. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Cytat Kompilujesz zapytanie czy je składasz? Bo to cholerna różnica. Dlaczego protected? Jak chcę pobrać treść zapytania to muszę przekonwertować na stringa :/ Nie mamy klasy QueryResults więc wiele metod nie będzie działać. Dlaczego QueryBuilder zawiera metody do wykonywania zapytania? Jak działa u Ciebie wykonywanie "count" ? Cytat Czy to przypadkiem nie wywali błędu gdy $column będzie tablicą? trim() na tablicy? Oczywiście, że wywali Notice: Array to string conversion Ten post edytował wookieb 21.10.2010, 08:10:13 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Kompilujesz zapytanie czy je składasz? Bo to cholerna różnica. No różnica, różnica.Cytat Nie mamy klasy QueryResults więc wiele metod nie będzie działać. Bo to paździerz i nie warto było tego tu wrzucać. Cytat Dlaczego QueryBuilder zawiera metody do wykonywania zapytania? Zawiera metody które tworzą obiekt QueryResults i tam jest wykonywane zapytanie.-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No ale dlaczego? Skoro klasa ma budować zapytania a nie je wykonywać...
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No ale dlaczego? Skoro klasa ma budować zapytania a nie je wykonywać... Prawda klasa ma budować zapytania. Jak uważasz że powinno to być rozwiązane. -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Tzn, że nie ma mieć nic wspólnego z ich wykonywaniem. Wywal te metody i pobieraj wyniki tylko za pomocą QueryResults.
Nadal nie powiedziałeś jak robisz tego counta. -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie wpychać w metody QB. Z count to zwykły num_rows. -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No i tak jest ok.
A masz jakąś metodą do transformowania zapytania na takie zliczające wszystkie rekordy? -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No i tak jest ok. Na 100% to poprawie, przy wprowadzaniu następnych zmian, napisz co jeszcze wymaga zmiany. Cytat A masz jakąś metodą do transformowania zapytania na takie zliczające wszystkie rekordy? tzn ![]() Ten post edytował skowron-line 21.10.2010, 10:18:27 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:16 |