Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >

-=Peter=-
Napisane: 1.11.2012, 18:17:44





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Nie używaj zagnieżdżonego operatora trójkowego, bo jest strasznie mało czytelny i trudno później go debugować. Problem tkwi w pierszeństwie operatorów, to co napisałeś jest równoważne temu:

  1. 'value' => set_value('data[goals]', (isset($result->goals) ? $result->goals : isset($default->goals)) ? $default->goals : ''),


A zapewne chciałeś osiągnąć:

  1. 'value' => set_value('data[goals]', isset($result->goals) ? $result->goals : (isset($default->goals) ? $default->goals : '')),


Radziłbym abyś sobie to zmienił na prostego ifa, tak jak mówiłem nie używaj podwójnego/potrójnego itp. operatora trójkowego:

  1. $value = '';
  2.  
  3. if(isset($result->goals)) {
  4. $value = $result->goals;
  5. } else if(isset($default->goals)) {
  6. $value = $default->goals;
  7. }
  Forum: PHP · Podgląd postu: #1003222 · Odpowiedzi: 2 · Wyświetleń: 258

-=Peter=-
Napisane: 28.10.2012, 10:32:30





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

To powinno być zrobione w walidatorze, zdarzenia prePersist itp. nie do tego służą. Możesz napisać swój customowy lub wykorzystać walidator Callback i stworzyć metodę w modelu, która dokonuje walidacji.
  Forum: Frameworki · Podgląd postu: #1002399 · Odpowiedzi: 3 · Wyświetleń: 314

-=Peter=-
Napisane: 23.06.2012, 22:57:27





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Cytat
Ale Action jest klasą abstrakcyjną.

To utwórz jej testową klasę konkretną, mocki nie służą do tego.

  1. //zamień
  2. $phases[$i] = $this->getMockForAbstractClass( "Ultilate\GameBundle\QueueSystem\Phase" );
  3. //na
  4. $phases[$i] = $this->getMockBuilder( "Ultilate\GameBundle\QueueSystem\Phase" )->setMethods(array('notify'))->getMock();
  Forum: Object-oriented programming · Podgląd postu: #972042 · Odpowiedzi: 8 · Wyświetleń: 897

-=Peter=-
Napisane: 15.12.2011, 19:51:26





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Cytat
Ciekawi mnie, czy Doctrine pobierałby aktualności automatycznie, czyli w momencie stworzenia obiektu przy pomocy ww. zapytania, czy w momencie, kiedy skorzystam z $user->getNews().

W obydwóch przypadkach nie zostaną zaciągnięte aktualności, aktualności zostaną zaciągnięte gdy wywołasz jakąś operację która wymaga fizycznie obiektów z kolekcji, np. metody z interfejsu iteratora (przejście przez pętle), czy metodę count (przy domyślnej konfiguracji relacji). Dodanie jakiegoś elementu do kolekcji również nie powoduje załadowania kolekcji, gdyż ta operacja nie wymaga tego aby kolekcja była zainicjalizowana.
  Forum: Object-oriented programming · Podgląd postu: #922690 · Odpowiedzi: 7 · Wyświetleń: 942

-=Peter=-
Napisane: 12.11.2011, 15:40:37





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Np. wtedy gdy w domyśle nie iterujesz po tablicy, tylko wyznaczasz dynamicznie wartości.

Przykładem może być iterowanie po dużych kolekcjach obiektów, której nie chcesz wczytywać na raz do pamięci, gdyż jest to nie wydajne, ale tworzysz na żądanie pojedyncze obiekty w iteratorze, czyli w jednym momencie w pamięci istnieje jeden obiekt który jest zwracany przez iterator. Szczerze powiedziawszy to już dawno temu ostatni raz implementowałem czysty interfejs Iterator, jest wiele dobrych iteratorów w spl (iteratory rekursywne, iteratory iterujące po plikach w systemie plików, iteratory filtrujące, keszujące itp), które wystarczają w większości przypadków
  Forum: Object-oriented programming · Podgląd postu: #913719 · Odpowiedzi: 4 · Wyświetleń: 1 045

-=Peter=-
Napisane: 12.11.2011, 14:55:57





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

W tym przypadku najprostszym rozwiązaniem będzie implementacja IteratorAggregate, a w metodzie getIterator tworzenie i zwracanie obiektu ArrayIterator.

  1. class Obiekt implements IteratorAggregate
  2. {
  3. private $tabela = array(1,2,3,4,5); // itd...
  4.  
  5. public function getIterator() { return new ArrayIterator($this->tabela); }
  6. }
  Forum: Object-oriented programming · Podgląd postu: #913709 · Odpowiedzi: 4 · Wyświetleń: 1 045

-=Peter=-
Napisane: 2.11.2011, 18:50:01





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

W php do stałym można jedynie przypisać wartości skalarne. Rozwiązaniem Twojego problemu będzie zbiór metod fabrycznych. Przykład użycia:

  1. $color = Color::getRed();


Metody te możesz zaimplementować w taki sposób, aby zawsze dana metoda zwracała ten sam obiekt, a nie tworzyła nowych (wzorzec flyweight).
  Forum: PHP · Podgląd postu: #910868 · Odpowiedzi: 4 · Wyświetleń: 322

-=Peter=-
Napisane: 19.10.2010, 19:28:32





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Wydaje mi się, że w pętli modyfikujesz (zwiększasz) tablicę apartments, a to że za każdym razem wywoływany jest count($apartments) powoduje że pętla wykonuje się masakryczną liczbę razy do momentu aż pamięci brakuje. Wyciągnij liczenie elementów tablicy $apartments przed pętle i przypisz do zmiennej, którą wstawisz w miejsca, gdzie obecnie wywołujesz funkcję count.
  Forum: PHP · Podgląd postu: #799255 · Odpowiedzi: 4 · Wyświetleń: 831

-=Peter=-
Napisane: 25.09.2010, 12:30:37





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Zmienną $g1 otocz w apostrofy. Pozatym popraw formatowanie, bo to co napisałeś wygląda okropnie winksmiley.jpg

  1. $tresc = sprintf('<?php $g1=\'%s\'; ?>', $g1);
  Forum: PHP · Podgląd postu: #792870 · Odpowiedzi: 2 · Wyświetleń: 605

-=Peter=-
Napisane: 3.07.2010, 12:58:56





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Cytat(gothye @ 3.07.2010, 12:43:31 ) *
leprze rozwiązanie to wyrażenie regularne np preg_match

Chyba nie wiesz do czego służą wyrażenia regularne.

Do tego zadania najlepsza jest funkcja strpos (szybsza od strstr)
  Forum: PHP · Podgląd postu: #761863 · Odpowiedzi: 4 · Wyświetleń: 1 560

-=Peter=-
Napisane: 21.06.2010, 21:58:23





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

No nie do końca narzuca typ prezentacji, bo wykorzystanie szablonu o rozszerzeniu *.php/*.tpl/*.html nie jest równoznaczne z tym, że widok będzie kodem html - może być dokumentem xml, json, txt, czy pdf itp. Przykładowo w "szablonie" mogą znajdować się reguły tworzące dokument pdf, które zostają odpowiednio wykorzystane przez widok do wygenerowania prezentacji (np. w najprostszym przypadku zaincludowane w odpowiednim miejscu metody renderującej).

Myślę że Twoja implementacja widoku w mvc jest podobna do tej co jest w znanych mi frameworkach (symfony, zf). Swoją drogą pozostaje kwestia, czy ta interpretacja wzorca mvc jest prawidłowa - są podzielone zdania na ten temat, ale jak wiadomo wzorce projektowe nie są sztywną regułą, mają wiele implementacji winksmiley.jpg
  Forum: PHP · Podgląd postu: #758038 · Odpowiedzi: 2 · Wyświetleń: 670

-=Peter=-
Napisane: 9.06.2010, 22:58:17





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Wybrałeś nie najlepiej, bo Twój problem ma się ni jak do oop. Tutaj raczej kłaniają się podstawy php.

  1. //24 linijka - tak powinno być
  2. $this->param[2]->{$this->param['3']}();
  Forum: PHP · Podgląd postu: #754475 · Odpowiedzi: 2 · Wyświetleń: 585

-=Peter=-
Napisane: 6.06.2010, 21:43:30





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

W symfony masz do wczytywania/zapisywania plików yaml stosowne klasy. Znajdują się one w folderze yaml, interesować powinny Cię sfYamlDumper oraz sfYamlParser
  Forum: Frameworki · Podgląd postu: #753445 · Odpowiedzi: 5 · Wyświetleń: 1 091

-=Peter=-
Napisane: 29.05.2010, 19:37:40





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Tworzysz akcję error404 w module np. default, ustawiasz go w settings.yml jako akcja do obsługi błędu 404, a w tej akcji przekierowujesz lub forwardujesz do strony głównej.

Inny sposób to regułka (na samym dole pliku routing.yml):

url: /*

Aczkolwiek wg mnie przy literówce użytkownik powinien być przekierowany na stronę błędu, w której zawrzesz np. informację o tym, czy oby na pewno adres jest poprawny. Jeśli użytkownik zostanie przekierowany na stronę główną, a spodziewał się czegoś innego, to zwyczajnie pomyśli "wtf" - ale to już kwestia użyteczności.
  Forum: PHP · Podgląd postu: #751146 · Odpowiedzi: 7 · Wyświetleń: 931

-=Peter=-
Napisane: 30.03.2010, 17:29:55





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

klik

Obecnie mój plugin ma dodaną jeszcze jedną funkcjonalność i został trochę poprawiony, ale wersja udostępniona na stronce powinna spełnić wymagania winksmiley.jpg
  Forum: Frameworki · Podgląd postu: #730976 · Odpowiedzi: 1 · Wyświetleń: 591

-=Peter=-
Napisane: 21.02.2010, 22:36:41





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Zasobów nie da się serializować, a najwidoczniej w tym obiekcie masz uchwyt curla.

Rozwiązanie to zamykanie zasobu w metodzie serialize (ew. __sleep), a tworzenie go na nowo w metodzie unserialize (ew. __wakeup).
  Forum: PHP · Podgląd postu: #716109 · Odpowiedzi: 3 · Wyświetleń: 681

-=Peter=-
Napisane: 4.02.2010, 19:44:49





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

translate.google.pl ;]
  Forum: Poszukuję · Podgląd postu: #709519 · Odpowiedzi: 9 · Wyświetleń: 1 219

-=Peter=-
Napisane: 2.02.2010, 16:53:30





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Sprawdź http://pecl.php.net/package/uploadprogress
Z tego co kiedyś czytałem (nie pamiętam, czy to było akurat o tym rozszerzeniu, teraz się w to nie zagłębiałem) dzięki tej bibliotece można zrobić to co napisałeś, czyli np. sprawdzić w czasie uploadu ile bajtów już dotarło na serwer.
  Forum: PHP · Podgląd postu: #708678 · Odpowiedzi: 11 · Wyświetleń: 3 509

-=Peter=-
Napisane: 21.12.2009, 16:02:34





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

  1. $select->form('table', array('type' => new Zend_Db_Expr('\'table\'')));
  Forum: Frameworki · Podgląd postu: #693661 · Odpowiedzi: 4 · Wyświetleń: 700

-=Peter=-
Napisane: 25.10.2009, 13:07:03





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Składnia pętli foreach się kłania.
Cytat
  1. public function show_menu($buttons)
  2. {
  3. echo '<ul id="menu">';
  4. foreach ($buttons as $name=>$url)
  5. //było:
  6. //foreach ($buttons as $name->$url)
  7. {
  8. $this->show_button($name, $url, !$this->is_actual_url($url));
  9. }
  10. echo '</ul>';
  11. }
  Forum: Przedszkole · Podgląd postu: #673967 · Odpowiedzi: 2 · Wyświetleń: 326

-=Peter=-
Napisane: 17.10.2009, 18:51:15





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

To normalne zachowanie, gdyż jak forwardujesz do kolejnej akcji, to zostanie wyświetlony widok nie tej akcji z której, ale do której się forwarduje. Jeśli chcesz przekazać jakieś parametry między akcjami to musisz ustawić je w requeście:

  1. $this->_forward('action', 'controller', 'module', array('param1' => 'value1'));
  2. //lub
  3. $this->getRequest()->setParam('param1', 'value1');
  4. $this->_forward('action', 'controller');
  Forum: Frameworki · Podgląd postu: #671836 · Odpowiedzi: 2 · Wyświetleń: 558

-=Peter=-
Napisane: 11.10.2009, 20:27:05





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Próbujesz zapisać niepoprawne dane do bazy danych. Doctrine ma takie coś jak walidatory: http://www.doctrine-project.org/documentat...data-validation

Walidację możesz wyłączyć poprzez ustawienie odpowiedniego atrybutu np. w klasie konfiguracyjnej projektu (ale nie wiem czy to ma jakiś wpływ na integrację doctrine z symfony)

  1. $manager = Doctrine_Manager::getInstance();
  2. $manager->setAttribute(Doctrine::ATTR_VALIDATE, false);

  Forum: Frameworki · Podgląd postu: #669947 · Odpowiedzi: 4 · Wyświetleń: 882

-=Peter=-
Napisane: 5.09.2009, 11:33:49





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

  1. $c = new Criteria();
  2. $c->addJoin(SuccessPeer::EVENT_ID, EventPeer::ID)
  3. ->addJoin(EventPeer::COMPET_ID, CompetPeer::ID)
  4. ->add(SuccessPeer::RIDER_ID, $id);
  5.  
  6. $results = SuccessPeer::doSelectXxx($c);

musisz napisać metodę doSelectXxx, która złoży z wyniku zapytania odpowiednią hierarchię klas, zobacz jak wygląda metoda doSelectJoinAll i zrób coś na ten wzór.
  Forum: Frameworki · Podgląd postu: #657632 · Odpowiedzi: 2 · Wyświetleń: 592

-=Peter=-
Napisane: 29.08.2009, 12:38:54





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

jest jeszcze funkcja mt_rand oraz odpowiednio srand i mt_srand do ustawiania znacznika losowości.
  Forum: PHP · Podgląd postu: #655151 · Odpowiedzi: 9 · Wyświetleń: 1 589

-=Peter=-
Napisane: 16.08.2009, 15:12:26





Grupa: Zarejestrowani
Postów: 304
Dołączył: 4.02.2005
Skąd: Kraków

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

Cytat
zabawa z globalami wiem ze to nie jest nurt oop ale wazne ze dziala i to bardzo dobrze.

Oj, wstydziłbyś się pisać takie coś w forum o OOP oraz podawać taki zbereźny kod... tongue.gif Jeśli już chcesz takie coś osiągnąć, to poczytaj o metodach magicznych __get() oraz __set(), one są rozwiązaniem Twojego problemu, a nie jakieś zmienne globalne...

Edit: jako iż mam dobry humor napiszę Ci uproszczone rozwiązanie Twojego problemu (pisane z palca):

  1. class Company{
  2. private $value;
  3. private $type;
  4. private $data = array();
  5.  
  6. public function __construct(){
  7. $this->wartosc = 'Wartosc';
  8. }
  9.  
  10. public function print(){
  11. return $this->wartosc;
  12. }
  13.  
  14. public function __get($name){
  15. return isset($this->data[$name]) ? $this->data[$name] : null;
  16. }
  17.  
  18. public function __set($name, $value){
  19. $this->data[$name] = $value;
  20. }
  21. }
  22.  
  23. $obj = new Company();
  24. echo $obj->print();


Powinno nawet działać bez metod magicznych __get i __set (ułomność php). Jednak najlepszym rozwiązaniem tego problemu będzie utworzenie odpowiednich składowych tej klasy. To składowe służą do tego celu, który chcesz osiągnąć, czyli przykładowo:

  1. class Company{
  2. private $wartosc;
  3.  
  4. public function __construct(){
  5. $this->wartosc = 'wartosc';
  6. }
  7.  
  8. public function getWartosc(){
  9. return $this->wartosc;
  10. }
  11. }
  Forum: Object-oriented programming · Podgląd postu: #649222 · Odpowiedzi: 8 · Wyświetleń: 1 301

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: 9.05.2024 - 10:54