Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]PHP5 obiektowy jak mam to zrobic
kielich
post
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Witam dopiero zaczynam php obiektowy i mam pewnie probelm chce zrobic zwykłą pętle tak dla przykładu ale nie wiem jak przeszukąłem już całe google (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i czytałem z 6 h dzisiaj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i nic nie czaje co z tym $this może mi ktoś to w 4 zdaniach wytłumaczyć będe wdzięczny o to kod:

Kod
<?php
class Klasa {
    
     public $x;
    
     public function petla()
     {
    
     for ($x=1; $x<=10; $x++)
    
     return $this -> x;
    
     }
     $Klasa = new Klasa;
     $Klasa ->petla;
     echo "wynik wynosi{$Klasa->petla}";
    
?>

no taki błąd
Kod
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in


Ten post edytował kielich 11.04.2009, 13:37:13
Go to the top of the page
+Quote Post
kajzur
post
Post #2





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

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


Wydaje mi się że odwołujesz się poza klasą do zmiennej składowej private, zmień private na public może (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Tak wogóle jakiś błąd dostajesz?
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




$Klasa ->petla();

Nawiasy.

unexpected T_VARIABLE, expecting T_FUNCTION = niespodziewane odwołanie do zmiennej, spodziewana funkcja

Ten post edytował blooregard 11.04.2009, 13:46:22
Go to the top of the page
+Quote Post
kielich
post
Post #4





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


poprawiłem na
Kod
$Klasa = new Klasa;
$Klasa ->petla();
echo "wynik wynosi{$Klasa->petla}";


dalej to samo
kurcze nie wiem czy to ma sens pisania obiektowo (IMG:http://forum.php.pl/style_emoticons/default/co_jest.gif)

Ten post edytował kielich 11.04.2009, 13:53:19
Go to the top of the page
+Quote Post
blooregard
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
dalej to samo


Tak, jak mówisz:
  1. <?php
  2. echo "wynik wynosi{$Klasa->petla}";
  3. ?>

Dalej ten sam błąd, tylko w innym miejscu.

Jak wywołujesz funkcję, to dajesz NAWIASY po jej nazwie - po tym interpreter PHP odróżnia funkcję od zmiennej.
Może lepiej zacznij od podstaw, zanim się zaczniesz bawić z OOP
Go to the top of the page
+Quote Post
kielich
post
Post #6





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No co do podstaw to strukturalnie już pisze bardzo długo i chciałem spróbować obiektowo

ps. umiesz pocieszyć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

a poprawiłem bład tak jak kazałeś i dalej cos nie gra cos jest nie tak
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
to strukturalnie już pisze bardzo długo

Można bardzo długo wyprzedzać na podwójnej ciągłej i nie wiedzieć, że to niezgodne z przepisami. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Cytat
dalej cos nie gra cos jest nie tak

Żadnych błędów, nic? Co się dzieje?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a tak spróbuj:

  1. <?php
  2. class Klasa
  3. {
  4.    public function petla()
  5.    {
  6.        for ($x=1; $x<=10; $x++)
  7.            echo $x;
  8.    }
  9. }
  10. $kl = new Klasa();
  11. $kl -> petla();
  12. ?>


#EDIT
zły kod.

Ten post edytował piotrooo89 11.04.2009, 14:06:01
Go to the top of the page
+Quote Post
kielich
post
Post #9





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


no bład dalej tan sam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kod
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in ............ on line 14
Go to the top of the page
+Quote Post
blooregard
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
No co do podstaw to strukturalnie już pisze bardzo długo i chciałem spróbować obiektowo

No to pamietaj, że

(strukturalnie) funkcja(); == (obiektowo) $obiekt->funkcja();

Cytat
a poprawiłem bład tak jak kazałeś i dalej cos nie gra cos jest nie tak

Ale co?
Jakis komunikat błędu ?

A, już wiem: brakuje Ci zamykającego nawiasu } po definicji klasy

Ten post edytował blooregard 11.04.2009, 14:06:03
Go to the top of the page
+Quote Post
kielich
post
Post #11





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No chociaż jeden ...(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a nie już ze zle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale petla sie nie wykonuje :/

wyswietla tylko wynik wynosi

Ten post edytował kielich 11.04.2009, 14:10:14
Go to the top of the page
+Quote Post
piotrooo89
post
Post #12


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(kielich @ 11.04.2009, 15:09:34 ) *
ale petla sie nie wykonuje :/


to może pokaż kod bo u mnie to moje działa wyświetla ładnie.
Go to the top of the page
+Quote Post
kielich
post
Post #13





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No kod taki jak był poprzedni ale kiedy zrobie tak
Kod
<?php
class Klasa {
  
    public $x;
  
    public function petla()
    {
  
    $this ->x=2;
    return $this -> x;
  
    }
    }
    $Klasa = new Klasa;
    $Klasa ->petla();
    echo "wynik wynosi{$Klasa->petla()}";
?>

to dział normalnie
piotrooo89 to pokaz twój kod tzn mój ale twój :)
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




zobacz pare postów wyżej...
Go to the top of the page
+Quote Post
kielich
post
Post #15





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No nie działa ja chce to wyswietlic na nowym obiektem a nie tak jak ty
Go to the top of the page
+Quote Post
K4mil94
post
Post #16





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

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


A nie trzeba tu konstruktora zbudować ?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




nie wiem czy to to:

  1. <?php
  2. class Klasa
  3. {
  4.    public function petla()
  5.    {
  6.        for ($x=1; $x<=10; $x++)
  7.        {
  8.            $s .= $x;
  9.        }
  10.        return $s;
  11.    }
  12. }
  13. $kl = new Klasa();
  14.  
  15. echo "wynik wynosi {$kl -> petla()}";
  16. ?>
Go to the top of the page
+Quote Post
adrian.p
post
Post #18





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 27.03.2009

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


No bo do zmiennej $x nie przypisujesz nic! Zwracasz $this->x ktora nie ma wartosci...
Go to the top of the page
+Quote Post
kielich
post
Post #19





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No dokłądnie o to mi chodziło a możesz mi powiedzieć dlaczego tak $s .= $x; dlaczego z " kropką"
I jesli możesz mi wyjaśnic co z tym $this
Go to the top of the page
+Quote Post
adrian.p
post
Post #20





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 27.03.2009

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


Cytat
No dokłądnie o to mi chodziło a możesz mi powiedzieć dlaczego tak $s .= $x; dlaczego z " kropką"


do zmiennej $s dopisuje zmienna $x; to taki sam zapis jak $s = $s.$x;


I przy okazji, szybki powrot do pierwszego kodu:

Kod
<?php
class Klasa {
    public $x;
    
    public function petla() {
        
        for ($x=1; $x <= 10; $x++)
        return $this->x;
    }
}
    
     $Klasa = new Klasa;
          
     echo "wynik wynosi{$Klasa->petla()}";
    
?>


W iteracji zwiekszasz zmiena $x a zwracasz $this->x. To dwie rozne sprawy.

Ten post edytował adrian.p 11.04.2009, 14:47:09
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 8.10.2025 - 11:29