Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak utworzyć obiekt w klasie?
Forum PHP.pl > Forum > Przedszkole
tintink
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"
}
wizu
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. }
askone
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
tintink
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.
askone
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...
tintink
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.
nospor
Przecież dostałeś przykład od wizu.
tintink
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

askone
To
  1. $this->$countPage

zamień na
  1. $this->countPage
tintink
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

askone
Zamiast
  1. $data -> findcountPage()


zastosuj
  1. $this->data->findcountPage()
wizu
  1. $this -> data -> findcountPage()
tintink
Wielkie dzięki, już wszystko jest jasne smile.gif
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.