Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z chroniona funkcja w klasie
uki8877
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 27.03.2016

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


Witam

Mam nadzieje ,ze to ostatnie pytanie na dzis (IMG:style_emoticons/default/smile.gif)

chce utworzyc funkcje ktora bedzie mi zwracac kilka linijek kodu:

  1. protected function domDOC() {
  2. libxml_use_internal_errors(true);
  3. $dom = new DOMDocument;
  4. $dom->loadHTML($this->getHighscore());
  5. $domXPath = new DomXPath($dom);
  6.  
  7. }

no i tu mam problem bo nie wychodzi mi to

probowalem tak:

  1. protected function domDOC() {
  2. libxml_use_internal_errors(true);
  3. $dom = new DOMDocument;
  4. $dom->loadHTML($this->getHTML());
  5. $domXPath = new DomXPath($dom);
  6.  
  7. return $this->domDOC();
  8.  
  9. }


Jednak to nie dziala. Natomiast gdy ten kod wkleje "normalnie' to wszystko dziala

czyli np w klasie count taki kod nie zadziala :

  1. public function count() {
  2. $this->domDOC();
  3.  
  4. return $dom->getElementsByTagName('option')->length;
  5. }


a taki zadziała:


  1. public function count() {
  2. libxml_use_internal_errors(true);
  3. $dom = new DOMDocument;
  4. $dom->loadHTML($this->getHTML());
  5. $domXPath = new DomXPath($dom);
  6.  
  7. return $dom->getElementsByTagName('option')->length;
  8. }


Bede wdzieczny za porady jak to usprawnic (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
IProSoft
post
Post #2





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Cóż za stworek, chyba podstawy się kłaniają...

W konstruktorze powinieneś zadeklarować argument DOMDocument, który później możesz wielokrotnie wykorzystać bez potrzeby ładowania na nowo.

Podaję Ci tylko przykład, nie rozwiązanie.
  1. public $dom;
  2.  
  3. public function __construct()
  4. {
  5. $this->dom = $this->getDOMDocument();
  6. }
  7.  
  8. protected function getDOMDocument()
  9. {
  10. libxml_use_internal_errors( true );
  11. $dom = new DOMDocument;
  12. $dom->loadHTML( $this->getHTML() );
  13.  
  14. return $dom;
  15. }
  16.  
  17. protected function getDomXPath( \DOMDocument $dom )
  18. {
  19. return new DomXPath( $dom );
  20. }
  21.  
  22. public function count($string)
  23. {
  24. return $this->dom->getElementsByTagName('option')->length;
  25. }
Go to the top of the page
+Quote Post
uki8877
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 27.03.2016

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


Cytat(IProSoft @ 1.05.2016, 10:04:10 ) *
Cóż za stworek, chyba podstawy się kłaniają...

W konstruktorze powinieneś zadeklarować argument DOMDocument, który później możesz wielokrotnie wykorzystać bez potrzeby ładowania na nowo.

Podaję Ci tylko przykład, nie rozwiązanie.
  1. public $dom;
  2.  
  3. public function __construct()
  4. {
  5. $this->dom = $this->getDOMDocument();
  6. }
  7.  
  8. protected function getDOMDocument()
  9. {
  10. libxml_use_internal_errors( true );
  11. $dom = new DOMDocument;
  12. $dom->loadHTML( $this->getHTML() );
  13.  
  14. return $dom;
  15. }
  16.  
  17. protected function getDomXPath( \DOMDocument $dom )
  18. {
  19. return new DomXPath( $dom );
  20. }
  21.  
  22. public function count($string)
  23. {
  24. return $this->dom->getElementsByTagName('option')->length;
  25. }


No klaniaja, klaniaja (IMG:style_emoticons/default/smile.gif) ale będę się uczył dalej, dzięki :-)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 26.12.2025 - 15:14