Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [xml][DOM] sama podstawa
marcinek37
post 8.04.2013, 14:15:55
Post #1





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


Mam kod:
  1. <?
  2. $doc = new DOMDocument();
  3. $doc->loadHTML('<HTML><A HREF="ss">asd</A>');
  4. echo $doc;
  5. ?>


Dopóki nie dodam ostatniej linijki, błędu nie ma. Jeśli tylko dowiem się w czym leży problem, od razu będę mógł iść dalej z tematem.

phhpinfo() mówi:
DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.6.26
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled
Go to the top of the page
+Quote Post
nospor
post 8.04.2013, 14:20:51
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Dopóki nie dodam ostatniej linijki, błędu nie ma.
Masz na mysli to:
echo $doc;
?

Mówisz że dostajesz błąd.... super... a może byś raczył się tym błędem z nami podzielić, czy może oczekujesz wróżenia z fusów?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marcinek37
post 8.04.2013, 17:03:10
Post #3





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


kompletnie wypadło mi z głowy, taki jest błąd:

Catchable fatal error: Object of class DOMDocument could not be converted to string in D:\Programy\WebServ\httpd-users\dom\index.php on line 4
Go to the top of the page
+Quote Post
melkorm
post 8.04.2013, 17:14:26
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


RTFM http://pl1.php.net/manual/en/domdocument.savehtml.php


--------------------
Go to the top of the page
+Quote Post
marcinek37
post 8.04.2013, 17:30:53
Post #5





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


czy macie może linka do jakiegoś poradnika, ale w języku polskim?
może być też temat na tym forum, gdzie ktoś to jakoś objaśnił
Go to the top of the page
+Quote Post
zegarek84
post 8.04.2013, 21:24:37
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


niestety większość materiałów jest po angielsku... jeśli cokolwiek kumasz to jak najwięcej czytaj i próbuj pisać kod trochę metodą prób i błędów - prędzej i zapamiętasz i zrozumiesz... jednak musisz nauczyć się z grubsza rozumieć bądź po swojemu debugować kod...

jeśli chodzi o DOM to świetne narzędzie - nie wszędzie wygodnie jest korzystać z wyrażeń regularnych a i to nie wszyscy je rozumią...
jeśli dokument chcesz odpytywać przez selektory CSS jak w jQuery to w google znajdziesz odpowiednie biblioteki jak PHPQuery itd... ale bez tych bibliotek możesz też skorzystać ze ścieżek XPath (łatwo jest sobie przekształcić selector CSS na wyrażenie XPath) DOMXPath::query


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
marcinek37
post 8.04.2013, 23:23:09
Post #7





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


zrobiłem postępy w temacie, ale zatrzymałem się na tym:
  1. <?
  2. $dom = new DOMDocument('1.0', 'utf-8');
  3. $dom->preserveWhiteSpace = true;
  4. $dom->loadXML('<categories>
  5. <category>
  6. <id>1</id>
  7. <name>AAA</name>
  8. </category>
  9. <category>
  10. <id>2</id>
  11. <name>BBB</name>
  12. </category>
  13. </categories>');
  14.  
  15. foreach($dom->getElementsByTagName('category') AS $category){
  16. echo'id: '.$category->getElementsByTagName('id')->nodeValue;
  17. echo'name: '.$category->getElementsByTagName('name')->nodeValue;
  18. }
  19. ?>


Chcę zrobić pętle, aby wybrane pola w konkretnym <category> pokazały się w odpowiedni sposób:

id: 1
name: AAA

id: 2
name: BBB

Wszystko jest ok, ale wartości się nie pokazują

Ten post edytował marcinek37 9.04.2013, 00:03:41
Go to the top of the page
+Quote Post
nospor
post 9.04.2013, 06:41:31
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Wszystko jest ok, ale wartości się nie pokazują
No to skoro się nie pokazują to chyba jednak nie jest ok....

Włączy wyświetlanie wszytkich błędów, a dowiesz się czemu się nie pokazują.
Temat: Jak poprawnie zada pytanie

getElementsByTagName zwraca listę elementów a trudno oczekiwać by lista miała parametr nodeValue. To pojedynczy element ma taki parametr a nie lista


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marcinek37
post 9.04.2013, 11:24:13
Post #9





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


Po dodaniu tego kodu pokazują się takie błędy:
Notice: Undefined property: DOMNodeList::$nodeValue in D:\Programy\WebServ\httpd-users\dom\index.php on line 20


Ale jeśli dam ten kod:
  1. <?
  2. ini_set('display_errors','1');
  3.  
  4. $dom = new DOMDocument('1.0', 'utf-8');
  5. $dom->preserveWhiteSpace = true;
  6. $dom->loadXML('<categories>
  7. <category>
  8. <id>1</id>
  9. <name>AAA</name>
  10. </category>
  11. <category>
  12. <id>2</id>
  13. <name>BBB</name>
  14. </category>
  15. </categories>');
  16.  
  17. foreach($dom->getElementsByTagName('category') AS $category){
  18. echo $category->nodeValue;
  19. }


to pokazują się wartości, ale wszystkie na raz i nie wiem, jak z tego $category->nodeValue; wziąć konkretne parametry, najpierw id a potem name
szukałem na tym forum i w internecie i wszędzie wyszukuje się tylko jedno pole, a ja szukam jednego pola, pod którym są kolejne dwa - i w tym problem
Go to the top of the page
+Quote Post
zegarek84
post 9.04.2013, 20:01:30
Post #10





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4. $dom = new DOMDocument('1.0', 'utf-8');
  5. $dom->preserveWhiteSpace = true;
  6. $dom->loadXML('<categories>
  7. <category>
  8. <id>1</id>
  9. <name>AAA</name>
  10. </category>
  11. <category>
  12. <id>2</id>
  13. <name>BBB</name>
  14. </category>
  15. </categories>');
  16.  
  17. $xpath = new DOMXPath($dom);
  18.  
  19. foreach($xpath->query('//category') AS $category){
  20. // opcjonalnie zamiast '//category'
  21. // '//category[id and name]' co znaczy '//category[child::id and child::name]'
  22. // czyli mające te dzieci
  23. $itemList = $xpath->query('./id|./name',$category);
  24. echo 'id: ',$itemList->item(0)->nodeValue, '<br />';
  25. echo 'name: ',$itemList->item(1)->nodeValue, '<br />';
  26. }


u Ciebie brakowało pobranie elementów z listy czyli ->item(0)... foreach sam przeiterował tą listę... poczytaj o podobieństwach XPath do selektorów CSS to na szybki start da Ci wiele możliwości, czytelniejszy i krótszy zapis... ale jak wolisz...

przykład dałem z XPath a swój popraw i staraj się czytać błędy ze zrozumieniem, gdyż DOMNodeList nie ma własności nodeValue ;p

PS. przy bardzo duuuużych plikach XML i tak będziesz musiał skorzystać z SAX ;] - to dopiero dla Ciebie pewnie będzie hardkor ;]

Ten post edytował zegarek84 9.04.2013, 20:45:24


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
marcinek37
post 9.04.2013, 22:49:54
Post #11





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


świetnie, działa!

a powiedz mi, "duże" pliki, tzn. jakie? 10MB?
Go to the top of the page
+Quote Post
zegarek84
post 9.04.2013, 23:06:59
Post #12





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


to zależy od ustawień serwera... ale każdy plik wczytywany w całości zawsze w pamięci zajmuje co najmniej tyle, co sam plik, a do tego parsowany w całości obiektami typu DOM znacznie więcej, gdyż na każdy z elementów jest tworzony nowy obiekt...

póki nie będziesz musiał zbyt często otwierać duuużych plików XML to wystarczy zwiększyć pamięć wykonywanego skryptu... ale jeśli pliku już będą naprawdę duże lub mniejsze a duże pliki będziesz musiał otwierać baaaaaaardzo często to już coś z tym będziesz musiał zrobić... pierwsza rzecz, jaka przychodzi większości to czytanie pliku po fragmencie i korzystanie z wyrażeń regularnych (nie polecam - choć polecam znać wyr. reg. ;]), w zasadzie jeśli pliku nie będzie można rozbić i będzie on na prawdę duży to przy niskim zużyciu pamięci można go odczytać poprzez SAX (w google hasło "php SAX"), jednak na razie tego tematu nie ruszaj puki nie potrzebujesz a tym bardziej, jeśli nic nie programowałeś zdarzeniowo...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
marcinek37
post 10.04.2013, 00:51:33
Post #13





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


ok, a masz może jakiegoś linka do jakiegoś poradnika, który krok po kroku wyjaśni DOM?
ale coś innego niż to, co daje manual
Go to the top of the page
+Quote Post
zegarek84
post 10.04.2013, 11:48:50
Post #14





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


popisz trochę w JavaScript, korzystaj z narzędzi typu firebug i narzędzi deweloperskich np. w google chrome i przeglądaj drzewo DOM, tam już z musu musisz wszystkie elementy html traktować jako osobny obiekt, a przeglądając drzewo DOM w narzędziach deweloperskich widzisz, jak dokument został wygenerowany itd... DOM to ogólny model obiektowy dokumentu i jest uniwersalny nie ważne, w jakim języku programowania... bardzo modne i wygodne stało się wyszukiwanie elementów DOM po selektorach CSS - stąd m.in. pierwotna popularność jQuery... choć w czystym JS są już metody typu .querySelektorAll...

jednak jeśli po stronie PHP nie chcesz korzystać z musu z zewnętrznych bibliotek wyszukujących po selektorach CSS to musisz poczytać o podobieństwach XPath do selektorów CSS i o konwersji selektorów CSS do XPath, ale jak załapiesz podstawy to zauważysz duże podobieństwo... dodatkowo XPath oferuje Ci więcej niż wyszukiwanie po selektorach CSS operując na dokumencie XML czy ściągniętej parsowanej stronie np. przez CURL... niestety większość materiałów jest po angielsku i tak z kopyta nie przytoczę Ci linków, jedynie daję wskazówki jak spróbować to łyknąć... dodatkowo w manualu PHP jeśli nie bardzo rozumiesz jak z danej funkcji korzystać lub co może być nie tak to warto przejrzeć też komentarze pod daną funkcją...

samo pisanie styli CSS też daje spojrzenie jakie elementy zostaną ostylowane, tj. prawie jakbyś szukał te elementy po selektorach CSS... więc możesz trochę pobawić się z "grafiką", ale przecież tym nie musisz się zajmować, jednak da Ci szersze spojrzenie... poczytaj o selektorach CSS3 gdyż jak załapiesz XPath to szybko je też dasz radę przekonwertować - ale to do bardziej zaawansowanego wyszukiwania...

pisząc kod HTML staraj się robić odpowiednie wcięcia, domknięcia na tym samym poziomie zagłębienia - będziesz wtedy lepiej w czystym kodzie HTML widział "obiekty"

jeśli chodzi o parsowanie stron to wygodny też jest silnik WebKit ale w C++ w Qt - jednak jest to inny język programowania...

Ten post edytował zegarek84 10.04.2013, 11:52:54


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
marcinek37
post 10.04.2013, 23:43:23
Post #15





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


1. mam już troszkę rozszerzony kod:
  1. <?
  2. /* funkcja z manuala */
  3. function DOMinnerHTML($element)
  4. {
  5. $innerHTML = "";
  6. $children = $element->childNodes;
  7. foreach ($children as $child)
  8. {
  9. $tmp_dom = new DOMDocument();
  10. $tmp_dom->appendChild($tmp_dom->importNode($child, true));
  11. $innerHTML.=trim($tmp_dom->saveHTML());
  12. }
  13. return $innerHTML;
  14. }
  15.  
  16.  
  17. /* mój kod */
  18. $xml = '<categories>
  19.  
  20. <category>
  21. <id>1</id>
  22. <name>AAA</name>
  23. <photos>
  24. <photo1>nazwa.jpg</photo1>
  25. </photos>
  26. </category>
  27.  
  28. <category>
  29. <id>2</id>
  30. <name>BBB</name>
  31. <photos></photos>
  32. <text>
  33. <b>opis</b>
  34. </text>
  35. </category>
  36.  
  37. </categories>';
  38.  
  39.  
  40. $dom = new DOMDocument('1.0', 'utf-8');
  41. $dom->loadXML($xml);
  42. foreach($dom->getElementsByTagName('category') AS $category){
  43. $id = $category->getElementsByTagName('id')->item(0)->nodeValue;
  44. $name = $category->getElementsByTagName('name')->item(0)->nodeValue;
  45. $photo1 = $category->getElementsByTagName('photo1')->item(0)->nodeValue;
  46. $text = $category->getElementsByTagName('text')->item(0)->nodeValue;
  47.  
  48. echo'id: '.$id.'<br />';
  49. echo'name: '.$name.'<br />';
  50. echo'photo1: '.$photo1.'<br />';
  51. echo'text: '.$text.'<br />';
  52. }?>


2. $photo1 ściąga dane bezpośrednio z elementu "photo1", w ogóle omija fakt, że jest jeszcze wcześniej w elemencie "photos" - to chyba nieeleganckie, próbowałem wielu metod, aby w kodzie to zapisać, że element "photo1" jest w elemencie "photos", jednak zawsze wyrzucało błędy albo nie pokazywało niczego - jak mogę to ładnie zapisać?

3. element "text" ma kod HTML, który jest od razu kasowany, wyczytałem, że jest potrzebna funkcja DOMinnerHTML jednak przykład z manuala był o wiele prostszy niż ten, dlatego nie potrafię go zastosować - chcę, aby HTML został jedynie w elemencie "text"; tutaj również próbowałem na kilka sposóbów i żaden nie dał efektu... domyślam się, że moje oba problemy to pikuś, ale nie wiem, jak się za to zabrać :/

Ten post edytował marcinek37 10.04.2013, 23:43:36
Go to the top of the page
+Quote Post
zegarek84
post 11.04.2013, 08:56:03
Post #16





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


przede wszystkim zawsze wyświetlaj sobie błędy:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', '1');

po drugie nie zawsze miałeś elementy których szukałeś
  1. <?php
  2. error_reporting(E_ALL|E_STRICT);
  3. ini_set('display_errors', '1');
  4.  
  5. function DOMinnerHTML($element) {
  6. $children = $element->childNodes;
  7. $tmp_dom = new DOMDocument();
  8. foreach ($children as $child) {
  9. $tmp_dom->appendChild($tmp_dom->importNode($child, true));
  10. }
  11. return trim($tmp_dom->saveHTML());
  12. }
  13.  
  14. $xml = '<categories>
  15.  
  16. <category>
  17. <id>1</id>
  18. <name>AAA</name>
  19. <photos>
  20. <photo1>nazwa.jpg</photo1>
  21. </photos>
  22. </category>
  23.  
  24. <category>
  25. <id>2</id>
  26. <name>BBB</name>
  27. <photos></photos>
  28. <text>
  29. <b>opis</b>
  30. </text>
  31. </category>
  32.  
  33. </categories>';
  34.  
  35. $dom = new DOMDocument('1.0', 'utf-8');
  36. $dom->loadXML($xml);
  37. foreach ($dom->getElementsByTagName('category') AS $category) {
  38. $oId = $category->getElementsByTagName('id')->item(0);
  39. $oName = $category->getElementsByTagName('name')->item(0);
  40. $oPhoto1 = $category->getElementsByTagName('photo1')->item(0);
  41. $oText = $category->getElementsByTagName('text')->item(0);
  42. // ->item() zwraca Element lub NULL
  43. $id = $oId ? $oId->nodeValue : '';
  44. $name = $oName ? $oName->nodeValue : '';
  45. $photo1 = $oPhoto1 ? $oPhoto1->nodeValue : '';
  46. $text = $oText ? DOMinnerHTML($oText) : '';
  47.  
  48. echo 'id: ', $id, '<br />';
  49. echo 'name: ', $name, '<br />';
  50. echo 'photo1: ', $photo1, '<br />';
  51. echo 'text: ', $text, '<br />';
  52. }


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
marcinek37
post 11.04.2013, 11:11:22
Post #17





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


bardzo Ci dziękuję!

1. specjalnie w drugim przypadku nie dałem wszystkich pól, aby sprawdzić, jak się zachowa skrypt
2. a co z nieeleganckim zapisem?
od razu szuka photo1 $oPhoto1 = $category->getElementsByTagName('photo1')->item(0); omijając fakt, że jest w "photos"
3. mógłbyć zapisać mi ten kod w najproszej wersji $id = $oId ? $oId->nodeValue : '';? normalnie w instrukcji warunkowej:
  1. <?
  2. if($oId == questionmark.gif){ $id = $oId; }
  3. else{ $id = $oId->nodeValue : ''; }
  4. ?>

4. i dlaczego jest ten dwukropek na końcu? $oId->nodeValue : '';
5. naprawdę nie przypominasz sobie jakiegoś prostego poradnika, choćby w języku angielskim? albo jakąś książkę? nie chcę tutaj ciągle pytać o takie bzdety...
Go to the top of the page
+Quote Post
zegarek84
post 11.04.2013, 12:58:51
Post #18





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(marcinek37 @ 11.04.2013, 12:11:22 ) *
2. a co z nieeleganckim zapisem?
od razu szuka photo1 $oPhoto1 = $category->getElementsByTagName('photo1')->item(0); omijając fakt, że jest w "photos"
3. mógłbyć zapisać mi ten kod w najproszej wersji $id = $oId ? $oId->nodeValue : '';? normalnie w instrukcji warunkowej:
...

przeanalizuj poniższy kod
Cytat(marcinek37 @ 11.04.2013, 12:11:22 ) *
4. i dlaczego jest ten dwukropek na końcu? $oId->nodeValue : '';

brakuje Ci podstaw programowania w dowolnym języku, jest to skrócony zapis przypisania wartości odpowiadający instrukcji if(){$zmienna = ...}else{$zmienna = }
Cytat(marcinek37 @ 11.04.2013, 12:11:22 ) *
5. naprawdę nie przypominasz sobie jakiegoś prostego poradnika, choćby w języku angielskim? albo jakąś książkę? nie chcę tutaj ciągle pytać o takie bzdety...

How to map CSS selectors to XPath queries
XPath and CSS Selectors
Korzystając z wyrażeń xpath masz większe możliwości i kontrolę wyszukiwanych elementów
  1. <?php
  2. error_reporting(E_ALL|E_STRICT);
  3. ini_set('display_errors', '1');
  4.  
  5. function DOMinnerHTML($element) {
  6. $children = $element->childNodes;
  7. $tmp_dom = new DOMDocument();
  8. foreach ($children as $child) {
  9. $tmp_dom->appendChild($tmp_dom->importNode($child, true));
  10. }
  11. return trim($tmp_dom->saveHTML());
  12. }
  13.  
  14.  
  15. $xml = '<categories>
  16.  
  17. <category>
  18. <id>1</id>
  19. <name>AAA</name>
  20. <photos>
  21. <photo1>nazwa.jpg</photo1>
  22. </photos>
  23. </category>
  24.  
  25. <category>
  26. <id>2</id>
  27. <name>BBB</name>
  28. <photos></photos>
  29. <text>
  30. <b>opis</b>
  31. </text>
  32. </category>
  33.  
  34. </categories>';
  35.  
  36. $dom = new DOMDocument('1.0', 'utf-8');
  37. $dom->loadXML($xml);
  38. $xpath = new DOMXPath($dom);
  39. foreach ($xpath->query('//category') AS $category) {
  40. $oId = $xpath->query('./id', $category)->item(0);
  41. $oName = $xpath->query('./name', $category)->item(0);
  42. $oPhoto1 = $xpath->query('./photos/photo1', $category)->item(0);
  43. $oText = $xpath->query('./text', $category)->item(0);
  44. // ->item() zwraca Element lub NULL
  45. $id = $name = $photo1 = $text = '';
  46. if($oId)
  47. $id = $oId->nodeValue;
  48. if($oName)
  49. $name = $oName->nodeValue;
  50. if($oPhoto1)
  51. $photo1 = $oPhoto1->nodeValue;
  52. if($oText)
  53. $text = DOMinnerHTML($oText);
  54.  
  55. echo 'id: ', $id, '<br />';
  56. echo 'name: ', $name, '<br />';
  57. echo 'photo1: ', $photo1, '<br />';
  58. echo 'text: ', $text, '<br />';
  59. }


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
marcinek37
post 11.04.2013, 15:25:13
Post #19





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

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


czyli muszę korzystać z DOMDocument oraz DOMXPath, aby elegancko przerobić konkretne dane - bardzo dziękuję

co do tych totalnych podstaw... to fakt, mam duże braki, dlatego czytam książkę z heliona, ale nie ma tam rozdziału o spodobach zapisu kodu, jeśli i w tym temacie masz coś ciekawego do poczytania, zrobię to bardzo chętnie
Go to the top of the page
+Quote Post
zegarek84
post 11.04.2013, 17:24:50
Post #20





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


z PHP tak na szybko to przeczytaj sobie np. to:
http://framework.zend.com/manual/1.12/en/c...g-standard.html
nie patrz, że to ze strony ZF, na stronie SYMFONY gdzieś była chyba podobna strona...

zresztą jak nie wybrałeś jakiegoś FW to i tak kiedyś będziesz musiał ;]... a stosując się do dobrych praktyk nawet jak nie będziesz mógł skorzystać z gotowego FW to bez problemu napiszesz szkielet podstawowy mini FW...

jest wiele konwencji zapisu zmiennych, sposobów formatowania kodu... ogólnie musisz próbować do jakiejś się dostosować ale bez przesady...

np. zmienne prywatne w prototypach obiektów w JavaScript w zasadzie da się zdefiniować tylko przez konwencję stosując znak podkreślenia na początku _zmienna... choć tą konwencję niektórzy wykorzystują też przy innych językach zważywszy na podpowiadanie kodu przez IDE... nazwy klas powinno zaczynać się dużymi literami, a instancje tych klas z małych już... przy wielu podstawowych zmiennych często pierwsza litera zmiennej może określać typ jak np. $iLat - zmienna typu integer - stąd np. w powyższym kodzie niektóre zmienne poprzedziłem "o" (od obiekt). Jeśli nazwa zmiennej jest wieloczłonowa to należy zdecydować się na jeden ze sposobów zapisu np. moja_dluga_zmienna lub mojaDlugaZmienna

szczerze powiedziawszy to musisz kodować - większe projekty wymusza na tobie stosowanie dobrych praktyk, odpowiedniego nazywania zmiennych, wcięć, odpowiedniego ułożenia i nazywania plików

do PHP na helionie wielu poleci Ci książkę typu "PHP obiekty wzorce i narzędzia" "PHP object, pattern and practice" 3 edycja (jak możesz to czytaj po ang.), ale nie pamiętam, czy jest tam o formatowaniu kodu, jednak ja też tą pozycję polecam...

czytając nowsze pozycje raczej autorzy stosują dobre praktyki...

samych książek z formatowaniem kodu to za bardzo nie pamiętam czy są dobre czy nie ale nasuwają mi się 2 pozycje:
"Clean Code"
"Code Craft - the practice of writing excellent code"



--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 19:16