Spawn Framework 1.2.6 wydany! |
1. Posty w tym forum są poddawane moderacji więc nie dodawaj ich kilka razy.
2. Akceptujemy tylko wartościowe wiadomości o php lub pochodnych
3. Publikacja newsa na wortalu po moderacji oscyluje w granicach 30min
4. Wstawiane grafiki powinny mieć maksymalną szerokość 357px
Zapraszamy do uzupełniania wortalu o ciekawe informacje :)
Spawn Framework 1.2.6 wydany! |
19.09.2010, 11:57:58
Post
#21
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
@Crozin - chcesz maile/imiona ? Jakiego ty się źródła spodziewasz bo nie za bardzo wiem ...
|
|
|
19.09.2010, 12:16:35
Post
#22
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Jakiegokolwiek źródła, skąd masz takie informacje? Pewnie napiszesz, że z prywatnej korespondencji mailowej - a może jednak podasz jakiegoś linka do poparcia tego stwierdzenia? Przyznam, że jest ono dość odważne...
|
|
|
19.09.2010, 12:29:22
Post
#23
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Piszesz o "popularnym frameworku" (wiem, że już to sprostowałeś, jednak w pierwszym poście nadal to wisi), "osobach odchodzących od Kohany na rzecz SF" - to wszystko ładnie brzmi, ale jeżeli nie jest poparte jakimiś statystkami to jest to zwyczajne "marketingowe kłamstwo". Poza tym ile osób przerzuciło się na Twoje rozwiązanie? W jaki sposób mierzysz popularność? Chyba nie względem ilości pobrań? Bo w tej chwili właśnie nabiłem Ci statystkę, ale używać tego FW nie mam zamiaru. Ile osób w tym czasie zaczęło korzystać ze wspomnianej Kohany (notabene słaby FW).
Swoją drogą do sprawdzania czy klucz tablicy istnieje jest array_key_exists, nie isset - oto dlaczego EDIT: zapomniałem dopisać. Cytat Dla mnie mały "bałagan". Dlaczego metoda kontrolera może tworzyć inne kontrolery i pobierać od nich akcje? Czy nie powinno się to dziać w frontControlerze (którego chyba nie masz)? A index.php to niby co to jest jak nie Front Controller? I dla jasności: we front kontrolerze nie powinno dochodzić do wywoływania akcji/ustalania co wywłać.
Ten post edytował Crozin 19.09.2010, 12:32:06 |
|
|
19.09.2010, 12:30:00
Post
#24
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
Wiem że jest dość odważne, możliwe że nawet trochę nie rozsądne na daną chwilę bo mogłem się spodziewać pytań o linki/źródła czy coś.
No ale jednak jak pisałem wcześniej moje 'statystyki' jeśli chodzi po popularność to tylko google analytics z którego takich info nie mam i privy. Cytat A to że jest jakaś popularność oceniam po google analytics oraz prywatnych korespondencjach.
|
|
|
19.09.2010, 14:12:42
Post
#25
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Swoją drogą do sprawdzania czy klucz tablicy istnieje jest array_key_exists, nie isset - oto dlaczego 1) array_key_exists jest wiele razy wolniejsze od isset (sprawdzałem, zachęcam do przeprowadzenia testu) 2) najczęściej szukając klucz w pewnej tablicy spodziewamy się iż ma jakąś wartość, więc jeżeli ma null nas to nie interesuje, dlatego lepiej użyć isset Cytat A index.php to niby co to jest jak nie Front Controller? I dla jasności: we front kontrolerze nie powinno dochodzić do wywoływania akcji/ustalania co wywłać. Oj chyba jednak powinno. Zresztą wszystko zależy od struktury FW. Mocno przesadzasz, ale to pewnie kwestia gustu. Oczywiście, że nie przesadzam ponieważ twoja klasa formularza służy tylko i wyłącznie do jego wyświetlania. Nawet nie wspiera: a) walidacji filtrowania danych c) nie posiada zabezpieczenia przed xss, tudzież niepoprawnie wyświetla wartości w atrybutach "value" d) tak naprawdę całą obsługę formularza wraz z wszystkimi standardowymi operacjami isset, trzeba pisać ręcznie. Co mi po takim narzędziu do formularzy skoro równie dobrze można zamknąć całą jego funkcjonalność w zwykłe szablony. Cytat
Ok a jak to bedzie wyglądało na zapytaniach bardziej złożonych? Np z joinami? Cytat Przejrzyj dokumentację a może stanie się jeszcze prostszy oraz chociaż częściowo zmienisz zdanie o niektórych klasach. Niee. Napisanie w dokumentacji "tak jest bo jest" nie zmieni mojego zdania, które podałem wcześniej. A szczególnie kładę nacisk na skalowalność. -------------------- |
|
|
19.09.2010, 14:18:08
Post
#26
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat 1) array_key_exists jest wiele razy wolniejsze od isset (sprawdzałem, zachęcam do przeprowadzenia testu) Tak, wiem że jest wolniejsze - ale za to działa poprawnie. I nie mów, że jak sprawdzamy czy klucz tablicy istnieje to wartości NULL nas nie interesują bo to już pod bzdurę podchodzi. Zresztą NULL to już jest jakaś wartość i informacja zarazem.
2) najczęściej szukając klucz w pewnej tablicy spodziewamy się iż ma jakąś wartość, więc jeżeli ma null nas to nie interesuje, dlatego lepiej użyć isset |
|
|
19.09.2010, 14:28:49
Post
#27
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
Oczywiście, że nie przesadzam ponieważ twoja klasa formularza służy tylko i wyłącznie do jego wyświetlania. Nawet nie wspiera: a) walidacji B) filtrowania danych c) nie posiada zabezpieczenia przed xss, tudzież niepoprawnie wyświetla wartości w atrybutach "value" d) tak naprawdę całą obsługę formularza wraz z wszystkimi standardowymi operacjami isset, trzeba pisać ręcznie. Co mi po takim narzędziu do formularzy skoro równie dobrze można zamknąć całą jego funkcjonalność w zwykłe szablony. $form->toError($valid->getError()); jeśli chodzi o wsparcie walidacji "d) tak naprawdę całą obsługę formularza wraz z wszystkimi standardowymi operacjami isset, trzeba pisać ręcznie." ? Cytat Ok a jak to bedzie wyglądało na zapytaniach bardziej złożonych? Np z joinami? Ale w czym problem? Co takie bajery mają do samej paginacji?
|
|
|
19.09.2010, 16:02:23
Post
#28
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Tak, wiem że jest wolniejsze - ale za to działa poprawnie. I nie mów, że jak sprawdzamy czy klucz tablicy istnieje to wartości NULL nas nie interesują bo to już pod bzdurę podchodzi. Zresztą NULL to już jest jakaś wartość i informacja zarazem. W ile procentach przypadków? 5%? Oczywiście, że w większości nas to nie interesuje bo rzadko kiedy trzyma się nulla w tablicy po prostu. $form->toError($valid->getError()); jeśli chodzi o wsparcie walidacji Łoo no to żeś wsparł walidację... "d) tak naprawdę całą obsługę formularza wraz z wszystkimi standardowymi operacjami isset, trzeba pisać ręcznie." Czyli twoja klasa formularza załatwia tylko wyświetlanie ale nie sprawdzi już czy wartość przesłana POST-em w selectcie występuję na liście jego opcji. Nie sprawdzi czy wartość dla elementu powinna być tablicą czy nie. Dodatkowo musisz sprawdzić czy wszystkie pola są aby na pewno w POST (czyli isset($_POST['pole']) itd). Prawdziwa klasa formularza dostaje na wejściu np POST-a i w metodzie getValues() zwraca Ci ładną przygotowaną tablicę wszystkich wartości, które na pewno są prawidłowe (jeżeli dane przeszły walidację) Cytat
Sprawdź dokładnie czy to działa, bo w metodzie sf_db::count nie widzę uwzględnienia: a) joinów where c) group by d) having Ci daruje W metodzie sf__orm::with nie rozróżniasz typów Join-a (LEFT, INNER, OUTER) Ten post edytował wookieb 19.09.2010, 16:06:05 -------------------- |
|
|
19.09.2010, 16:12:44
Post
#29
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
Cytat Czyli twoja klasa formularza załatwia tylko wyświetlanie ale nie sprawdzi już czy wartość przesłana POST-em w selectcie występuję na liście jego opcji. Nie sprawdzi czy wartość dla elementu powinna być tablicą czy nie. Dodatkowo musisz sprawdzić czy wszystkie pola są aby na pewno w POST (czyli isset($_POST['pole']) itd). Prawdziwa klasa formularza dostaje na wejściu np POST-a i w metodzie getValues() zwraca Ci ładną przygotowaną tablicę z listą wszystkich wartości, które na pewno są prawidłowe. od isset $_POST masz sf_request np. $req->post('dupa'); Cytat Sprawdź dokładnie czy to działa, bo w metodzie sf_db::where nie widze uwzględnienia: a) joinów cool.gif where c) group by d) having Ci daruje No rzeczywiście przez te kropki w where(...) wywala jakiś błąd A na serio to działać działa z wszystkimi bajerami bo nawet na stronie z fw jest kilka joinów itd. (np. na forum) Cytat W metodzie sf__orm::with nie rozróżniasz typów Join-a (LEFT, INNER, OUTER) Jaśniej , przecież ustawiasz w modelu tabeli 'type'=>'join', //join , join left etc... |
|
|
19.09.2010, 16:13:14
Post
#30
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat W ile procentach przypadków? 5%? Oczywiście, że w większości nas to nie interesuje bo rzadko kiedy trzyma się nulla w tablicy po prostu. 5% przypadków to mało? Przy czymś takim 0.1% to już zdecydowanie za dużo. Kod ma sprawdzić czy klucz istnieje - klucz istnieje, a ten zwraca, że nie - to jest po prostu błędny kod i nie ma tu usprawiedliwienia.To, że Ty rzadko używasz NULLa, to Twoja sprawa - mi się to zdarza relatywnie często. |
|
|
19.09.2010, 16:21:27
Post
#31
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
od isset $_POST masz sf_request np. $req->post('dupa'); Faktycznie nie zauważyłem na liście Jaśniej , przecież ustawiasz w modelu tabeli 'type'=>'join', //join , join left etc... A no tak bo to ORM. A jeżeli zaistnieje konieczność zmiany typu joina to co wtedy? Da się to jakoś zmienić? Where działa. Joinów nie sprawdzałem a group by nie działa. Spaginuj takie zapytanie
To, że Ty rzadko używasz NULLa, to Twoja sprawa - mi się to zdarza relatywnie często. Proszę o przykład Ten post edytował wookieb 19.09.2010, 16:36:06 -------------------- |
|
|
19.09.2010, 16:30:01
Post
#32
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat Proszę o przykład Ale co, mam Ci podać przykłady użycia NULLa (to, że akurat mowa o NULLu w tablicy nie ma większego znaczenia)? Przede wszystkim zawsze kiedy chcesz poinformować, że czegoś nie ma, jest nie ustawione, nie istnieje lub nie jest za zainicjalizowane. Przykładowo: pobierasz dane z bazy i masz kolumnę z NULLem. |
|
|
19.09.2010, 16:39:35
Post
#33
|
|
Grupa: Moderatorzy Postów: 36 449 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Przykładowo: pobierasz dane z bazy i masz kolumnę z NULLem. Do php dotrze to jako pusty tekst a nie jako null.NIe mniej jednak zgadzam się z Tobą, że isset dajacy dla wartosci null FALSE to pomyłka jakaś. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
19.09.2010, 16:42:27
Post
#34
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Jeżeli to zły przykład to nawet gdy pobierasz rekord z tablicy to raczej znasz strukturę tablicy zwrotnej. Ja doskonale rozumiem, że null w tablicy może wystąpić ale dzieje się to tak kur.... rzadko (szczególnie, jeżeli w aplikacji używasz mało tablic) że często się to pomija. W formularzach? isset W iteratorach? tak tutaj może być array_key_exists - zależy kto jak często używa iteratorów W szablonach i metodach __set __get nie ma kompletnie żadnej różnicy Obsługa $_GET, $_POST, $_COOKIE - isset (nie jest możliwe wstawienia NULL-a) Wszelkie kontenery - jeszcze nie spotkałem przypadku, gdzie kontener musiałby mi przechowywać null-e Cytat NIe mniej jednak zgadzam się z Tobą, że isset dajacy dla wartosci null FALSE to pomyłka jakaś. Jak dla mnie ogromne ułatwienie. Poza tym sama nazwa wskazuje nais (czy jest) set (ustawiony). Ustawienie wartości na null oznacza jej brak, czyli wartość nie jest ustawiona. Ten post edytował wookieb 19.09.2010, 16:50:03 -------------------- |
|
|
19.09.2010, 16:48:32
Post
#35
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
Cytat A no tak bo to ORM. A jeżeli zaistnieje konieczność zmiany typu joina to co wtedy? Da się to jakoś zmienić? możesz zadeklarować w modelu tabeli kilka opcji dla with() lub użyć od tak ...->join()->... Cytat Co do paginacji zaraz sprawdzę. Where działa. Joinów nie sprawdzałem a group by nie działa. Spaginuj takie zapytanie hmm jeśli chodzi o group to racja, obecnie w count sprawdzam czy jest where i jak nie ma to leci sztywne zapytanie, aby działało trzeba by dać jakikolwiek where np id>0... poprawi się :-) |
|
|
19.09.2010, 16:54:10
Post
#36
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
możesz zadeklarować w modelu tabeli kilka opcji dla with() lub użyć od tak ...->join()->... Ok super. hmm jeśli chodzi o group to racja, obecnie w count sprawdzam czy jest where i jak nie ma to leci sztywne zapytanie, aby działało trzeba by dać jakikolwiek where np id>0... poprawi się :-) Niestety nie. Count dla zapytań z group by robi się w ten sposób
gdzie coalesce wstawiasz tylko dla tych pól, które mogą mieć NULL w wartości Przy having jest chyba jeszcze trudniej. Ten post edytował wookieb 19.09.2010, 17:04:02 -------------------- |
|
|
19.09.2010, 17:29:19
Post
#37
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat Do php dotrze to jako pusty tekst a nie jako null. Z niedowierzania aż sprawdziłem:Kod mysql> SELECT colname FROM nulltest; Jeden wiersz to pusty tekst, drugi NULL+---------+ | colname | +---------+ | NULL | | | +---------+ 2 rows in set (0.00 sec) Wynik: Kod array 0 => array 'colname' => null 0 => null 1 => array 'colname' => string '' (length=0) 0 => string '' (length=0) Cytat Ja doskonale rozumiem, że null w tablicy może wystąpić ale dzieje się to tak kur.... rzadko (szczególnie, jeżeli w aplikacji używasz mało tablic) że często się to pomija. To, że nie jest to jakieś wyjątkowo częste zjawisko to chyba wszyscy się zgadzamy. Ale ono występuje i trzeba to mieć na uwadze, bo w końcu wystąpi i będziesz przez 5 godzin szukał przyczyny - albo co gorsza, nie zauważysz błędu. isset jest szybsze, ale się nie nadaje, bo nie spełnia warunków - nie jest w stanie określić czy klucz tablicy istnieje - to jaką on ma wartość to nas nie interesuje.Cytat Ustawienie wartości na null oznacza jej brak, czyli wartość nie jest ustawiona. Tak - wartość nie jest ustawiona - ale klucz już tak. Poza tym brak wartości to już wartość. Czym innym jest $a = null;, a czym innym jest w ogóle nie istnienie zmiennej $a.
|
|
|
19.09.2010, 17:33:10
Post
#38
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Hehe Crozin nie rozumiemy się
Ja nie mówię, że array_key_exists nie powinno się używać. Jak najbardziej powinno ale tylko w miejscach w których możliwe jest wstawienie NULL-a tylko, że tych miejsc jest wyjątkowo mało -------------------- |
|
|
19.09.2010, 17:58:35
Post
#39
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat tylko, że tych miejsc jest wyjątkowo mało Właściwie to można przyjąć, że w $_GET/$_POST/$_COOKIE nie ma nulli - chociaż jakby się uparł ($_POST['a'] = null; (notabene PHP powinien obsługiwać final dla zmiennych) - ale jak występuje takie coś to ktoś już ma dużo poważniejszy problem :]). Wszędzie indziej mogą wystąpić i prędzej czy później wystąpią.
|
|
|
19.09.2010, 18:06:38
Post
#40
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
A ja mam pytanie - wypomniałeś mi że używam isset zamiast array_key_exists - gdzie twoim zdaniem lepiej sprawdzi się array_key_exists bo osobiście nie widzę takiego miejsca?
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 13:02 |