Napisane: 30.11.2014, 21:08:35 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Słuchaj, przewodnia idea jest taka, że w klasie unikasz bezpośredniego odwoływania się do zmiennych poza klasą, albo pól innych klas (zgroza) Jeśli coś trzeba zrobić związanego z takim polem innej klasy, to być może powinna być do tego odpowiednia metoda w takiej klasie. Jeśli już faktycznie potrzebujesz pobrać wartość takiego pola, to do tego ta klasa, w której jest to pole (nie-publiczne, rzecz jasna) może udostępniać metodę pobierającą (zwyczajowo się na to mówi getter). |
Forum: Przedszkole · Podgląd postu: #1134251 · Odpowiedzi: 7 · Wyświetleń: 1 177 |
Napisane: 18.11.2014, 10:47:54 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Nie ma innego wyjścia, jak obrabiać sekwencyjnie tą strukturę danych. Wszystko się sprowadza do jakiegoś rodzaju pętli. Jeśli martwisz się tym, że wiele razy jakieś pętle będą iterowały po tej tablicy wyników robiąc za każdym razem co innego, i że będzie to nieoptymalne - to może niepotrzebnie się martwisz? Jeśli jest to jednak faktycznie problem, to rozwiązaniem jest zrobienie wszystkiego w jednej, dużej brzydkiej pętli (ta technika optymalizacyjna ma nawet swoją nazwę, nie pamiętam teraz jaką), ewentualnie pobieranie mniejszej ilości danych (stronicowanie itp.) lub przechowywanie wyników tymczasowych, żeby niepotrzebnie nie iterować itd. No ale takie rozwiązania zaśmiecają kod i są robione tylko w wyjątkowych przypadkach (zwykle mocno naruszają paradygmaty OOP). Czasami może też pomóc zwracanie referencji do utworzonej tablicy (jeśli jest ogromna) i operowanie bezpośrednio na niej, ale generalnie trzeba unikać takiego kombinowania. Podsumowując, najoptymalniej by było, gdyby robić wszystkie operacje przetwarzające te pobrane z bazy dane w jednej pętli, od razu w momencie ich pobierania, i najlepiej operować na generatorze zwracającym dane z zapytania do bazy, z pominięciem etapu tworzenia w PHP pośredniej tablicy przechowującej pobrane wiersze, ale zdajesz sobie chyba sprawę, że to jest powrót do programowania we wczesnym Basicu... |
Forum: Object-oriented programming · Podgląd postu: #1132564 · Odpowiedzi: 3 · Wyświetleń: 1 522 |
Napisane: 2.10.2014, 22:33:21 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Oprócz tego, o ile dobrze pamiętam, można było utworzyć obiekt klasy Zend_Db_Table i skonfigurować go, po czym używać w zwyczajny sposób do wykonywania operacji na tabeli. |
Forum: Frameworki · Podgląd postu: #1127261 · Odpowiedzi: 3 · Wyświetleń: 772 |
Napisane: 22.07.2014, 22:00:22 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Bo tworzysz je i konfigurujesz raz, a odbierasz wiele razy w różnych miejscach kodu, tam, gdzie ich potrzebujesz. |
Forum: Object-oriented programming · Podgląd postu: #1116583 · Odpowiedzi: 9 · Wyświetleń: 1 170 |
Napisane: 8.07.2014, 20:50:00 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
kolumny będące kluczami obcymi muszą mieć możliwość przechowywać typ NULL |
Forum: Bazy danych · Podgląd postu: #1114396 · Odpowiedzi: 2 · Wyświetleń: 810 |
Napisane: 30.05.2014, 20:29:02 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
mirobor, pomyśl chwilę, proszę. W pętli trzeba zapamiętywać rozmiar największego dotychczas znalezionego pliku, aby go porównywać z następną wartością. |
Forum: Przedszkole · Podgląd postu: #1108837 · Odpowiedzi: 13 · Wyświetleń: 352 |
Napisane: 1.05.2014, 09:22:25 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Powody są różne, przykładowo: - może to być zapis liczby w systemie o podstawie 52 (26 podstawowych liter małych i dużych) a nie dziesiętnym. To pozwala zapisać duże liczby znacznie mniejszą ilością znaków, - id jest trudniejsze do odczytu (tylko w sumie po co?) - to może być jakiś hash (aby nie dało się łatwo zgadnąć innego) - to może być jakaś zakodowana informacja; jeden string oprócz id dostarcza dodatkowych informacji, np. statystycznych czy dowolnych innych - i różne inne pomysły, zależnie od potrzeb W przypadku youtube, sprawdź ten adres, który podałeś, że jak zmienisz ostatnią literę w identyfikatorze, nadal zobaczysz ten sam film. (qGOjFBgyhYw, qGOjFBgyhYx, qGOjFBgyhYy, qGOjFBgyhYz). Jeśli chodzi o wyszukiwanie, to przy ogromnych ilościach danych i tak jedna baza tego nie obsłuży, więc się np. bazy sharduje i taki identyfikator będzie też zawierał informacje gdzie (w której bazie) szukać, itp. Bazy mają ograniczenia na maksymalną liczbę przechowywanych rekordów, więc jak masz więcej danych do przechowywania, to jedna baza nie wystarczy, klucze by się w końcu skończyły (ale i tak ze względu na wydajność trzeba rozkładać dane między oddzielne bazy wcześniej). |
Forum: Przedszkole · Podgląd postu: #1104566 · Odpowiedzi: 7 · Wyświetleń: 417 |
Napisane: 2.04.2014, 21:28:08 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
do tego są gotowe extensions przecież, np. bcmath |
Forum: Przedszkole · Podgląd postu: #1100213 · Odpowiedzi: 1 · Wyświetleń: 276 |
Napisane: 31.03.2014, 21:40:54 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Uzupełniając: wykonujesz ten skrypt PHP na implementacji 32-bitowej, a na niej typ int może przyjąć maksymalną wartość właśnie 2147483647 i do takiej jest redukowana rzutowana liczba przekraczająca zakres (np. 4053342299). Jeśli chcesz, aby zmienna o typie int przyjęła taką wartość, uruchom program w środowisku 64-bitowym. |
Forum: Przedszkole · Podgląd postu: #1099839 · Odpowiedzi: 2 · Wyświetleń: 844 |
Napisane: 28.02.2014, 05:51:25 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Dokładnie tak jak zaobserwowałeś, chodzi o to, że array_walk_recursive jest jakby uruchamiane od nowa na każdy nowy poziom zagłębienia tablicy, od nowa wywołuje iterację po aktualnym poziomie z zdefiniowaną funkcją oraz aktualną, istniejącą w danym zasięgu widoczności wartością $sum. Na każdy taki nowy poziom iteracji brana jest aktualna wartość $sum i zostaje użyta przy iteracji, a dopiero w danej iteracji (na jednym poziomie zagłębienia) pomiędzy kolejnymi wywołaniami funkcja anonimowa otrzymuje referencję do $sum. Widać to wyraźnie przy takim zapisie:
Niestety, zapis:
jest niemożliwy (powoduje błąd). Stąd wywołanie: daje takie dziwne wyniki i końcowa wartość $sum = 0 (bo w początkowym zasięgu widoczności wartość $sum się nie zmieniła - tylko wartość $sum jest przekazywana do iteracji, nie referencja). No a ostatni przykład robi co chcesz, bo właśnie do tego jest to use(&$sum) - aby można użyć referencji. Dobrze jego zachowanie widać po tym:
Swoją drogą, tak samo działa:
|
Forum: Przedszkole · Podgląd postu: #1094228 · Odpowiedzi: 2 · Wyświetleń: 401 |
Napisane: 28.01.2014, 20:18:26 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
jeszcze np. do inicjalizacji czy zmiany zmiennych w pętli for:
ogólnie przecinkiem można rozdzielać wykonywane instrukcje, ale wartością takiego wyrażenia jest wartość instrukcji ostatniej (na prawo). W echo, jak już zostało wspomniane, po przecinku podajesz kolejne parametry do wyechowania. |
Forum: Przedszkole · Podgląd postu: #1088010 · Odpowiedzi: 13 · Wyświetleń: 1 128 |
Napisane: 4.01.2014, 03:28:38 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
jeśli poczekasz trochę, będzie to: http://helion.pl/ksiazki/tdd-sztuka-tworze...beck,tddszt.htm |
Forum: Książki · Podgląd postu: #1083406 · Odpowiedzi: 6 · Wyświetleń: 14 204 |
Napisane: 31.12.2013, 01:04:28 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
problem wyjaśniony jest na http://www.php.net/manual/en/language.types.float.php najprostsze rozwiązanie to stosowanie http://www.php.net/manual/en/ref.bc.php lub zaokrąglanie wyniku funkcją round() |
Forum: PHP · Podgląd postu: #1082866 · Odpowiedzi: 5 · Wyświetleń: 391 |
Napisane: 8.12.2013, 12:31:11 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Dla Ciebie na początek nr 3. Uzupełniająco mógłbyś przeczytać też nr 6. Chociaż zakres omawianych w niej tematów jest bardzo szeroki, jest to wartościowa lektura. Następnie nr 8 - ta książka jest zaskakująco dobra. Przeczytałem dopiero 7 rozdziałów (z 33) ale zrobiły na mnie dobre wrażenie (aczkolwiek może być dość trudna dla początkującego) i póki co - polecam ją. W dalszej kolejności zapoznaj się z pozycjami nr 1, 4 i 7. |
Forum: Pytania · Podgląd postu: #1079394 · Odpowiedzi: 10 · Wyświetleń: 13 825 |
Napisane: 6.12.2013, 21:21:15 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
a http://php.net/manual/pl/book.bc.php znasz? |
Forum: PHP · Podgląd postu: #1079239 · Odpowiedzi: 2 · Wyświetleń: 330 |
Napisane: 26.11.2013, 22:41:46 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Poczytaj o widoczności zmiennych protected i private. W klasie AbstractController właściwość $view jest private, czyli nie jest widoczna w klasach potomnych. |
Forum: PHP · Podgląd postu: #1077573 · Odpowiedzi: 2 · Wyświetleń: 220 |
Napisane: 25.08.2013, 22:16:28 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Jeśli transakcje, to serialized, a lock typu write musi być... |
Forum: MySQL · Podgląd postu: #1062202 · Odpowiedzi: 6 · Wyświetleń: 454 |
Napisane: 1.06.2013, 10:40:27 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Powinieneś mieć raczej 2 tabele: wp_ogloszenia oraz wp_ogloszenia_grupa, która może zawierać kolumny o wartościach wspólnych dla wszystkich powiązanych wierszy z wp_ogloszenia (np. kolumna data może się tam znaleźć). Teraz dodajesz jeden rekord do wp_ogloszenia_grupa, pobierasz jego ID i wstawiasz z tym ID wiersze do wp_ogloszenia. Wszystko w transakcji. |
Forum: Przedszkole · Podgląd postu: #1048451 · Odpowiedzi: 2 · Wyświetleń: 338 |
Napisane: 6.05.2013, 22:48:33 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
otwierasz dokumentację Zend_View_Helper_url i czytasz: Generates an url given the name of a route. return: Url for the link href attribute. access: public string url ([ $urlOptions = array()], [mixed $name = null], [bool $reset = false], [ $encode = true]) array $urlOptions: Options passed to the assemble method of the Route object. mixed $name: The name of a Route to use. If null it will use the current Route bool $reset: Whether or not to reset the route defaults with those provided $encode podpowiedź: drugi parametr to nazwa route |
Forum: Frameworki · Podgląd postu: #1043355 · Odpowiedzi: 3 · Wyświetleń: 341 |
Napisane: 5.05.2013, 23:12:04 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
|
Forum: Przedszkole · Podgląd postu: #1043173 · Odpowiedzi: 1 · Wyświetleń: 238 |
Napisane: 27.03.2013, 22:53:49 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Przecież w tej funkcji buildPath masz dwa wywołania $this->buildPath i one muszą zwracać wartość - daj przed nimi return. Ewentualnie coś innego (w innej linii) zwracaj (nie będę tego analizował) - tak, aby było poprawnie. |
Forum: Przedszkole · Podgląd postu: #1035315 · Odpowiedzi: 2 · Wyświetleń: 799 |
Napisane: 9.12.2012, 00:11:45 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
może te wartości użyte do skonstruowania kluczy tablicy mają na końcu znak nowej linii (lub <br />) |
Forum: Przedszkole · Podgląd postu: #1011144 · Odpowiedzi: 8 · Wyświetleń: 294 |
Napisane: 11.12.2012, 23:32:00 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Polecam przeczytać też uwagę z manuala empty: Cytat Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false. |
Forum: PHP · Podgląd postu: #1011737 · Odpowiedzi: 4 · Wyświetleń: 519 |
Napisane: 11.11.2012, 01:12:24 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
JS nie zapamiętuje zmiennych lokalnych jako globalne. To działa inaczej. W momencie wywołania funkcji, jest zapamiętywany jej kontekst, w jakim została wywołana. Inny przykład kodu, który wyświetli pożądane 3, to: Kod function cos() { for(var a=0; a<10; a++) { if(a==3){ var f = function(a){ setTimeout(function(){ alert(a); }, 1000); }; f(a); } } } cos(); |
Forum: JavaScript · Podgląd postu: #1005280 · Odpowiedzi: 7 · Wyświetleń: 388 |
Napisane: 29.10.2012, 22:35:18 | |
Grupa: Zarejestrowani Postów: 279 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
wystarczy tylko jeden wpis w application.ini z pierwszą częścią nazwy, wszystkie pozostałe powinny zostać znalezione automatycznie, oczywiście nazwy klas muszą się mapować na nazwy katalagów. np. klasa: My_PostAndFilesUpload_Processor wpis w application.ini: autoloadernamespaces[] = "My_" i w library plik: library/My/PostAndFilesUpload/Processor.php standarowo tak to działa. |
Forum: Frameworki · Podgląd postu: #1002735 · Odpowiedzi: 2 · Wyświetleń: 279 |
Nowe odpowiedzi Brak nowych odpowiedzi Popularny temat (Nowe) Popularny temat (Brak nowych) |
Sonda (Nowe) Sonda (Brak nowych) Zamknięty temat Przeniesiony temat |
Wersja Lo-Fi | Aktualny czas: 16.04.2024 - 05:13 |