Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $this / self:: i plik 0
Forum PHP.pl > Forum > PHP
kicaj
Mam o to taki fragment konstruktora:
  1. <?php
  2. public function __construct( $strFileName )
  3. {
  4. if( file_exists( $strFileName ) === true )
  5. {
  6. return true;
  7.  
  8.  
  9. }
  10. else
  11. {
  12. $this -> __construct( 'file.html' );
  13. $this -> abc = 'Lorem Ipsum...';
  14. //self::__construct( 'file.html' );
  15. //self::__set( 'abc', 'Lorem Ipsum...' );
  16. }
  17. }
  18. ?>

Pytania:
1. Ktory sposob mam wybrac z $this czy self:: i dlaczego?
2. Czytalem ze funkcje do zarzadzania plikami maja problem z plikiem kiedy ten nazywa sie poprostu 0, takze nalezy uzyc trojargumentowego porownania w celu wyeliminowania bledu, w tym przypadku jednak to nie dziala, dlaczego?
bela
Ad 1. $this, radzę poczytać sporo o OOP i metodach statycznych, bo kłaniają się podstawy ;]
dr_bonzo
Do metod statycznych zawsze self::, chociarz $this chyba tez dziala, ale kod jest mniej czytelny/zrozumialy.

Konstruktor nie moze nic zwracac!!! (return true;)
bela
dr_bozno, $this nie działa w metodach statycznych, bo niby jaki obiekt wskazuje wtedy $this?
NuLL
bela_666 ma rację smile.gif

Co do pytania drugiego - co wogóle porownywac ?

  1. <?
  2. if(file_exists('plik'))
  3. {
  4. }
  5. ?>

Ja nie znam takiego wymogu.
dr_bonzo
bela_666:
kicaj_ pytal o sposob WYWOLYWANIA metod.

W javie mozna wywolywac metody statyczne Klasa.metoda() lub Obiekt.metoda() / this.metoda() z tym ze Eclipse poleca pierwszy sposob.
Dla php: "chociarz $this chyba tez dziala"
CHYBA -- bo nie sprawdzalem.
kicaj
W tym przypadku obie (self i this) dzialaja poprawnie. Jednak nie sa to metody statyczne wiec uzyje $this.

P.S. Konstruktor wzraca true tylko w celu zobrazowania przykladu:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.