Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 33)
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
blooregard
post
Post #21


Newsman


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




$s .=$x to to samo co $s = $s . $x; czyli skrócna forma operatora konkatenacji (łączenia stringów)

$this to odwołanie do obiektu "wewnątrz" niego samego.
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #22





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


$s .= $x; dopisujesz do zmiennej $s wartości $x(nie nadpisujesz zmiennej) podstawy PHP
$this - odwołujesz sie do zmiennych klasy, do funkcji zawartych w klasie(wewnatrz klasy)
Musisz jeszcze sporo poczytac o oop
http://pl.php.net/oop
najważniejsze podstawy

Ten post edytował artur_dziocha 11.04.2009, 14:48:39
Go to the top of the page
+Quote Post
kielich
post
Post #23





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

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


OK czyli ten kod jest prawidłowy??
Kod
<?php
class Klasa
{
   public function petla()
   {
       $a=56;
       $b=48;
       $wynik=$a+$b/3;
       if ($wynik<100){
      
       echo"liczba jest mniejsza od 100 ";
       }
        return $wynik;
   }
}
$kl = new Klasa();
echo " <br />a wynik wynosi {$kl -> petla()}";
?>


A powiedz mi jeszcze kiedy i jak używać tego $this bo wszedzie jest napisane to co ty mi powiedziałeś
i już mykam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Tu jest dobry przykład no ale go zbytnio nie rozumiem w personaliach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kod
<?php

    class osoba
    {
        public $imie; // 1
        public $nazwisko;
        
        public function ustawPersonalia($imie, $nazwisko) // 2
        {
            $this -> imie = $imie; // 3
            $this -> nazwisko = $nazwisko;
        } // end ustawPersonalia();
        
        public function personalia()
        {
            return $this -> imie.' '.$this -> nazwisko;        
        } // end personalia();    
    }
    
    $osoba = new osoba; // 4
    $osoba -> ustawPersonalia('Adam', 'Kowalski'); // 5
    
    echo $osoba -> personalia(); // 6
?>
Go to the top of the page
+Quote Post
erix
post
Post #24





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




Cytat
A powiedz mi jeszcze kiedy i jak używać tego $this bo wszedzie jest napisane to co ty mi powiedziałeś

$this, to odniesienie do bieżącej instancji klasy.

Czyli w Twoim przykładzie, to by było coś takiego:

  1. <?php
  2. $osoba->zmienna = 'asd';
  3.  
  4. //... w klasie osoba
  5. function personalia(){
  6.   $this->zmienna = 'asd';
  7. }
  8. ?>


Klasę możesz przyporządkować do dowolnej zmiennej; $this używamy wewnątrz klas, aby odnieść się do samej siebie.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #25


Newsman


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




a ja tu bym walnął exception

  1. <?php
  2. if ($wynik<100){
  3.      
  4.       echo"liczba jest mniejsza od 100 ";
  5.       }
  6. ?>
Go to the top of the page
+Quote Post
kielich
post
Post #26





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

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


OK myśle że tak no ale ciągle jest mniejsza od nawet jak dam $a=200 i $b=200
Kod
<?php
class Klasa
{
   public function petla()
   {
       $a=59;
       $b=50;
       $wynik=$a+$b;
       return $wynik;
   }
}
try
    {
        if($wynik <= 100)
        {
            throw new Exception('liczba jest mniejsza od 100');
        }
        
        echo 'blbalbalb ';
    }
    catch(Exception $w)
    {
        echo $w -> getMessage();
    }

$cos = new Klasa;
echo " i wynosi: {$cos->petla()}";
?>
Go to the top of the page
+Quote Post
piotrooo89
post
Post #27


Newsman


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




tak ma być:

  1. <?php
  2. class Klasa
  3. {
  4.    public function petla()
  5.    {
  6.        $a=59;
  7.        $b=50;
  8.        $wynik=$a+$b;
  9.        if($wynik <= 100)
  10.        {
  11.            throw new Exception('liczba jest mniejsza od 100');
  12.        }
  13.        return $wynik;
  14.    }
  15. }
  16. try
  17. {
  18.    $cos = new Klasa;
  19.    echo " i wynosi: {$cos->petla()}";
  20. }
  21. catch(Exception $w)
  22. {
  23.    echo $w -> getMessage();
  24. }
  25. ?>
Go to the top of the page
+Quote Post
kielich
post
Post #28





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

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


OK teraz rozumiem Wielkie thx a mam takie pytanie czy można zmienne przekazywać między funkcjami??
Go to the top of the page
+Quote Post
piotrooo89
post
Post #29


Newsman


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




można za pomocą $this.
Go to the top of the page
+Quote Post
kielich
post
Post #30





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

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


Dzięki Ci za pomoc tylko ty praktycznie mi pomagasz w tym poście czy mógłbyś pokrótce przedstawić jak to ma wyglądać (krótki kod) będę wdzięczny
Go to the top of the page
+Quote Post
piotrooo89
post
Post #31


Newsman


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




ale co dokladnie chcesz wiedzieć? co mam pokazać?
Go to the top of the page
+Quote Post
kielich
post
Post #32





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

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


jak zmienne przekazywać między funkcjami
Go to the top of the page
+Quote Post
piotrooo89
post
Post #33


Newsman


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




powiedzmy że mamy taki konstruktor:

  1. <?php
  2. public function __construct($sql)
  3.    {    
  4.        $this->sql = $sql;
  5.    }
  6.    public function load()
  7.    {
  8.        $sql_query = mysql_query($this->sql);
  9.        while ($rows = mysql_fetch_row($sql_query))
  10.        {
  11.            $rows[0];
  12.        }
  13.    }
  14. ?>


tak można przekazywać.
Go to the top of the page
+Quote Post
kielich
post
Post #34





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

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


OK Dzięki za wszystko POZDRO dla Ciebie
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: 7.10.2025 - 01:26