Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >

irmidjusz
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) smile.gif 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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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:

  1. $sum = 0;
  2.  
  3. $func = function($val, $key, &$sum){
  4. echo 'current sum: ' . $sum . '<br>';
  5. $sum += $val;
  6. echo $sum . '<br>';
  7. };
  8.  
  9. array_walk_recursive($a, $func, $sum);


Niestety, zapis:
  1. array_walk_recursive($a, $func, &$sum);

jest niemożliwy (powoduje błąd). Stąd wywołanie:
  1. array_walk_recursive($a, $func, $sum);
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:
  1. $sum = 0;
  2.  
  3. $func = function($val, $key) use(&$sum) {
  4. echo 'current sum: ' . $sum . '<br>';
  5. $sum += $val;
  6. echo $sum . '<br>';
  7. };
  8.  
  9. array_walk_recursive($a, $func);


Swoją drogą, tak samo działa:
  1. $sum = 0;
  2.  
  3. $func = function($val, $key) {
  4. global $sum;
  5. echo 'current sum: ' . $sum . '<br>';
  6. $sum += $val;
  7. echo $sum . '<br>';
  8. };
  9.  
  10. array_walk_recursive($a, $func);

wink.gif
  Forum: Przedszkole · Podgląd postu: #1094228 · Odpowiedzi: 2 · Wyświetleń: 401

irmidjusz
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:
  1. for($i=0, $j=k-1; $i < $j ; ++$i, --$j){...}


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

irmidjusz
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 smile.gif
  Forum: Książki · Podgląd postu: #1083406 · Odpowiedzi: 6 · Wyświetleń: 14 206

irmidjusz
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

irmidjusz
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 829

irmidjusz
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ń: 331

irmidjusz
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

irmidjusz
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

irmidjusz
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ń: 339

irmidjusz
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

irmidjusz
Napisane: 5.05.2013, 23:12:04





Grupa: Zarejestrowani
Postów: 279
Dołączył: 25.02.2012

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

  1. $produkty['DATA']->price
  Forum: Przedszkole · Podgląd postu: #1043173 · Odpowiedzi: 1 · Wyświetleń: 238

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

irmidjusz
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

3 Stron V   1 2 3 >

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 17:23