Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z chroniona funkcja w klasie
uki8877
post 29.04.2016, 20:51:31
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 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 smile.gif
Go to the top of the page
+Quote Post
Tomplus
post 30.04.2016, 06:53:16
Post #2





Grupa: Zarejestrowani
Postów: 1 837
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie przedstawiłeś nam pełni klasy, ale czy nie mylisz sobie protected z private?
Go to the top of the page
+Quote Post
uki8877
post 30.04.2016, 10:19:19
Post #3





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

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


W tym przypadku nie ma to znaczenia ponieważ do funkcji odwołuje się tylko wewnątrz klasy, nie poza nią
Go to the top of the page
+Quote Post
CuteOne
post 30.04.2016, 11:34:11
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. protected function getDOMDocument() {
  2. libxml_use_internal_errors(true);
  3. $dom = new DOMDocument;
  4. $dom->loadHTML($this->getHTML());
  5.  
  6. return $dom;
  7. }
  8.  
  9. protected function getDomXPath(\DOMDocument $dom) {
  10. return new DomXPath($dom);
  11. }
  12.  
  13. public function count($string) {
  14. $dom = $this->getDOMDocument();
  15.  
  16. return $dom->getElementsByTagName('option')->length;
  17. }


Tylko, że to całkowicie bezsensu wink.gif za każdym razem gdy będziesz chciał coś zrobić stworzysz nową instancję DOMDocument. Przemyśl to jeszcze smile.gif
Go to the top of the page
+Quote Post
uki8877
post 30.04.2016, 11:44:28
Post #5





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

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


@CuteOne

Skoro uwazasz ze to bez sensu to nie mam zamiaru polemizować :-)

W takim razie może podpowiesz jak byś rozwiązał ten problem ?
Go to the top of the page
+Quote Post
Tomplus
post 30.04.2016, 16:21:21
Post #6





Grupa: Zarejestrowani
Postów: 1 837
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

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


stwórz sobie metodę która będzie inicjować w twoim wypadku najlepiej w konstruktorze.
Go to the top of the page
+Quote Post
uki8877
post 30.04.2016, 16:54:59
Post #7





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

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


czyli to co podal CuteOne ? ->

  1. public function __construct() {
  2.  
  3. protected function getDOMDocument() {
  4.  
  5. libxml_use_internal_errors(true);
  6. $dom = new DOMDocument;
  7. $dom->loadHTML($this->getHTML());
  8.  
  9. return $dom;
  10.  
  11. }
  12.  
  13. protected function getDomXPath(\DOMDocument $dom) {
  14.  
  15. return new DomXPath($dom);
  16.  
  17. }
  18. }
Go to the top of the page
+Quote Post
IProSoft
post 1.05.2016, 09:04:10
Post #8





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. }


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
uki8877
post 1.05.2016, 11:07:13
Post #9





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 smile.gif ale będę się uczył dalej, dzięki :-)
Go to the top of the page
+Quote Post

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: 27.04.2024 - 04:32