Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak utworzyć obiekt w klasie?
tintink
post 24.08.2011, 13:00:12
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.08.2011

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


Witam mam pytanie jak utworzyć obiekt w klasie?
np.

class DataPage
{
...
}

class PageController
{
$data = new DataPage(); //komunikat "Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\www2\pliktestowy.php on line 84"
}
Go to the top of the page
+Quote Post
wizu
post 24.08.2011, 13:04:06
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Możesz do tego wykorzystać konstruktor.
  1. class DataPage
  2. {
  3.  
  4. }
  5.  
  6. class PageController
  7. {
  8. private $data;
  9.  
  10. public function __construct()
  11. {
  12. $this->data = new DataPage();
  13. }
  14. }


Ten post edytował wizu 24.08.2011, 13:04:37
Go to the top of the page
+Quote Post
askone
post 24.08.2011, 13:05:28
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


A czytał Kolega jakikolwiek poradnik OOP?? Wydaje mi się, że nie więc podpowiem - brakuje metod (funkcji) w ramach których będziesz udostępniał funkcjonalności klasy...

Pozdrawiam


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
tintink
post 24.08.2011, 13:19:23
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.08.2011

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


Cytat(askone @ 24.08.2011, 14:05:28 ) *
A czytał Kolega jakikolwiek poradnik OOP?? Wydaje mi się, że nie więc podpowiem - brakuje metod (funkcji) w ramach których będziesz udostępniał funkcjonalności klasy...

Pozdrawiam


Metody już mam, chciałem jak najprościej przedstawić problem, w języku java nie miałbym takiego problemu. Chciał bym w projekcie stworzyć trzy klasy pierwsza, która odpowiedzialna jest za pobieranie danych z xml, druga do przetwarzania danych, logikę (żeby przetwarzać muszę mieć obiekt z klasy dane) i trzecią za wyświetlanie informacji.
Go to the top of the page
+Quote Post
askone
post 24.08.2011, 13:26:40
Post #5





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Cytat(tintink @ 24.08.2011, 14:19:23 ) *
Metody już mam, chciałem jak najprościej przedstawić problem, w języku java nie miałbym takiego problemu.


Skoro znasz język java to poczytaj tylko o składni PHP - zasady programowania OOP są takie same...


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
tintink
post 24.08.2011, 13:50:38
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.08.2011

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


Jak by była składnia tylko inna nie wyskoczył by mi komunikat, szkoda, że ludzie na forach zazwyczaj piszą przeglądnij forum, przeczytaj książkę. Wydaje mi się, że pytanie nie było takie głupie, a nawet jak to po co jest zakładka przedszkole? W poradnikach o programowaniu OOP rzadko są pokazywane takie przykłady.
Go to the top of the page
+Quote Post
nospor
post 24.08.2011, 13:53:40
Post #7





Grupa: Moderatorzy
Postów: 36 460
Pomógł: 6297
Dołączył: 27.12.2004




Przecież dostałeś przykład od wizu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tintink
post 26.08.2011, 08:30:53
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.08.2011

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


Jeszcze mam jedno pytanie dlaczego w trakcie tworzenia obiektu wskakują błędy? Kawałek kodu:

class DataPage //dane
{
function findcountPage() //ilosc stron
{
return count($GLOBALS['baza_xml'] -> page);
}
}
class PageController //controller
{

private $data; //obiekt klasy dane

public function __construct()
{
$this -> $data = new DataPage(); //95
}

public function countPage()
{
$this -> $countPage = $data -> findcountPage();
return $countPage;
}
}
$obiekt = new PageController();

Wyskakują mi błędy:
Notice: Undefined variable: data in C:\xampp\htdocs\www2\pliktestowy.php on line 95
Fatal error: Cannot access empty property in C:\xampp\htdocs\www2\pliktestowy.php on line 95

Go to the top of the page
+Quote Post
askone
post 26.08.2011, 08:36:39
Post #9





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


To
  1. $this->$countPage

zamień na
  1. $this->countPage


Ten post edytował askone 26.08.2011, 08:38:23


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
tintink
post 26.08.2011, 09:09:23
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.08.2011

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


Dzięki, ostatnie pytanie, jak odwołać się w klasie do funkcji innej klasy przez obiekt w nim znajdujący się?
Kawałek kodu:

class DataPage //dane
{
function findcountPage() //ilosc stron
{
return count($GLOBALS['baza_xml'] -> page);
}
}
class PageController //controller
{

private $data; //obiekt klasy dane
private $countPage;

public function __construct()
{
$this -> data = new DataPage();
}

public function countPage()
{
$this -> countPage = $data -> findcountPage(); //110, Nie wiem jak odwołać się do funkcji innej klasy przez obiekt $data
return $countPage;
}
}

$obiekt = new PageController();
$obiekt -> countPage();

Błędy:
Notice: Undefined variable: data in C:\xampp\htdocs\www2\pliktestowy.php on line 110
Fatal error: Call to a member function findcountPage() on a non-object in C:\xampp\htdocs\www2\pliktestowy.php on line 110

Go to the top of the page
+Quote Post
askone
post 26.08.2011, 09:20:22
Post #11





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Zamiast
  1. $data -> findcountPage()


zastosuj
  1. $this->data->findcountPage()


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
wizu
post 26.08.2011, 09:20:53
Post #12





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


  1. $this -> data -> findcountPage()
Go to the top of the page
+Quote Post
tintink
post 26.08.2011, 09:24:45
Post #13





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.08.2011

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


Wielkie dzięki, już wszystko jest jasne smile.gif
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: 7.05.2024 - 13:15