Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja i metoda
Forum PHP.pl > Forum > Przedszkole
matejbos
Witam. Problem następujący.


  1. function dziala(){
  2. echo "Ta funkcja działa";
  3. }
  4.  
  5. if(isset($_POST['submit'])){
  6. dziala();
  7. }
  8.  
  9. class Przyklad(){
  10.  
  11. function nie_dziala(){
  12. echo "Ta metoda nie działa";
  13. }
  14.  
  15. }
  16. $obiekt = New Przyklad();
  17. $obiekt->nie_dziala(); <---- to wyswietla
  18.  
  19.  
  20. if(isset($_POST['submit'])){
  21. $obiekt->nie_dziala(); <--- tego juz nie
  22. }


Czego nie dopisałem, lub co źle zrobiłem questionmark.gif
b4rt3kk
Hmm, może dlatego, że zmienna nie istnieje, przez co warunek isset nie jest spełniony?

  1. if(isset($_POST['submit'])){
  2. $obiekt->nie_dziala(); <--- tego juz nie
  3. echo 'test'; // dopisz linijke i sprawdz czy ja wyswietli
  4. }
matejbos
to przykład tylko z kodu zmienna istnieje <input type="submit" value="Dodaj produkt" name="submit"/>
b4rt3kk
Skoro jesteś pewien, że warunek jest spełniony to jeszcze się upewnij, że tworzysz nowy egzemplarz klasy nim użyjesz metody. Próbowałeś się dostać poprzez:

  1. Przyklad::nie_dziala();
matejbos
Ok, faktycznie działa w tym przypadku, ale jest problem z działaniem zmiennej np tak jak w tym przypadku, wywala taki błąd Fatal error: Using $this when not in object context


  1. <input type="submit" value="Dodaj produkt" name="submit"/>

  1. class Przyklad(){
  2.  
  3. public $proba="Nie wyswietla/nie dziala ta zmienna";
  4.  
  5. function nie_dziala(){
  6. echo $this->proba;
  7. }
  8.  
  9. }
  10. $obiekt = New Przyklad();
  11. $obiekt->nie_dziala();
  12.  
  13. Przyklad::nie_dziala();
  14.  
  15. if(isset($_POST['submit'])){
  16. $obiekt->nie_dziala(); // nie dziala
  17. Przyklad::nie_dziala(); // nie dziala
  18. }
b4rt3kk
Bo nie tak się nadaje wartości w obiektowym PHP.

  1. class Przyklad(){
  2.  
  3. public $proba;
  4.  
  5. function __construct() {
  6. $this->proba = 'jakas wartosc';
  7. }
  8.  
  9. function nie_dziala(){
  10. echo $this->proba;
  11. }
pamil
Cytat(b4rt3kk @ 14.09.2012, 15:49:16 ) *
Bo nie tak się nadaje wartości w obiektowym PHP.

  1. class Przyklad(){
  2.  
  3. public $proba;
  4.  
  5. function __construct() {
  6. $this->proba = 'jakas wartosc';
  7. }
  8.  
  9. function nie_dziala(){
  10. echo $this->proba;
  11. }


Głupoty pleciesz, wyrażenie
  1. public $proba = 'tekst';
jest poprawne oraz to dobra praktyka przy definiowaniu domyślnych wartości. Działa to dla wszelkich typów prostych (nie stworzysz obiektu w ten sposób/nie obliczysz wartości/nie dodasz czegoś warunkowo).
matejbos
Ok teraz wszystko działa poprawnie, dzięki wielkie za szybkie odpowiedzi.
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.