Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [oop] wywolanie jednej klasy z poziomu drugiej
poligon81
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.04.2008

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


Cześć,

Mam jak dotąd dość podstawowe pojęcie o programowaniu obiektowym w PHP, ale staram się go nauczyc efektywnie wykorzystywać, co mam nadzieję, zaprocentuje w przyszłości...

Piszę właśnie stosunkowo prostą aplikację ale nie wiem jak rozwiązać jedną kwestię koncepcyjną


mam taki oto plik index.php

  1. <?php
  2. require_once 'classA.php';
  3. $instancja_klasy_a = new a;
  4.  
  5. require_once 'classB.php';
  6.  
  7.  
  8. require_once 'classC.php';
  9.  
  10. itd...
  11. ?>



I teraz, chciałbym zeby w jakis sposob metody i pola z $instancja_klasy_a były dostępne w obrębie innych klas.
Pytanie teraz czy jest jakas możliwośćbo zrobic cos takiego ?
Czy jesli klasy B, C itp bedą dziedziczyć po klasie A, metody i pola z $instancja_klasy_a będą dostępne z poziomu innych klas?

Oczywiscie moge tworzyć instancje klasy A w konstruktorze albo w metodach klasy B i C ale chciałbym tego uniknąć gdyż klasa A jest dość mocno obciążającą serwer i chciałbym uniknąć wielokrotnego przetwarzania tych samych danych...

Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
KapiX
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.12.2007

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


Cytat(poligon81 @ 17.04.2008, 23:58:46 ) *
I tak tez zrobiłem ale nie mogę się odwołać do pol instancji klasy a z poziomu metod klasy B.
Czy dziedziczenie cos tu zmieni ?
Ew. prosiłbym o przykład takiego odwołania bo jakoś nie do konca wiem jak to mozna zrobic


Nie wiem dokładnie, ale powinno (OOP znam tylko z C++ ;P).
Wyglądało by to tak:
Kod
class A {
protected $jakiesPole;
}

class B extends A {
function jakasMetoda() {
  $innePole = $jakiesPole;
}
}


Nie jestem pewny, czy będzie działać (z pamięci piszę).
Go to the top of the page
+Quote Post
poligon81
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.04.2008

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


Cytat(KapiX @ 18.04.2008, 00:04:58 ) *
Nie wiem dokładnie, ale powinno (OOP znam tylko z C++ ;P).
Wyglądało by to tak:
Kod
class A {
  protected $jakiesPole;
}

class B extends A {
  function jakasMetoda() {
   $innePole = $jakiesPole;
  }
}


Nie jestem pewny, czy będzie działać (z pamięci piszę).



Hm... wydaje mi sie ze to nie bedzie działać. Odwołanie bezpośrednio do pola klasy A raczej jest nie mozliwe, bo mozliwe jest wystąpienie kilku instancji klasy A wiec nie za bardzo wtedy byłoby wiadomo gdzie sie odwoływać....

Ustawiłem klase B jako dziedziczną po A. Wywołuję instancję klasy A i B, a w klasie b w jednej z metod odwołuję sie do metody klasy a (która miała by mi zwracac zmienna / tablice ) poprzez $inst_klasy_a -> get (); jednak dostaję komunikat:

Undefined variable: inst_klasy_a
Fatal error: Call to a member function get() on a non-object...
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 00:06