Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][class]Mieszanie klas, łączenie między sobą
szmerak
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


  1. <?
  2. class Lang {
  3. private $lang;
  4. function __construct()
  5. {
  6. $this->lang = "pl-lang";
  7. }
  8. public function GetLangs($lg)
  9. {
  10. include 'languages/'.$lg.'.php';
  11. $this->lang = $lg;
  12. return $lang;
  13. }
  14. public function GetLang($k)
  15. {
  16. $lang = $this->GetLangs($this->lang);
  17. foreach($lang as $key => $value)
  18. {
  19. if($k == $key)
  20. {
  21. $result = $value;
  22. }
  23. }
  24. return $result;
  25. }
  26. }
  27. ?>


Mam tutaj klasę której będę używać do pobierania langów itp... Lecz z tym rodzi się mały problem.
Ponieważ tych klas jest parę i nie wiem jak stworzyć komunikację między nimi...

Pamiętam że gdzieś o tym czytałem jakoś na "i" się to nazywało ale nie umiem sobie za nic przypomnieć.

A teraz przejdę do rzeczy...
Mam tą klasę wyżej i teraz będą jeszcze dwie.

  1. class Template {
  2. public function DBCriticalError($key)
  3. {
  4. $lang = Lang::GetLang($key);
  5. echo $lang;
  6. }
  7. }


I potem w klasie DB chciał bym wywołać funkcję Template::DBCriticalError("DB_ERROR");
i aby ta pobrała Lang i go wyświetliła. Lecz wyskakuje że undefined function ;/ a dokładniej to:

  1. Fatal error: Call to undefined method DB::GetLangs() in D:\Program Files\WebServ\httpd\nowa\classes\lang.class.php on line 16


Proszę o pomoc głównie tylko o metodę "tworzenia połączenia między klasami"

Ten post edytował szmerak 3.08.2011, 01:11:02
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


i jak implements albo e jak extends


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
lobopol
post
Post #3





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Zapewne dlatego, że odwołujesz się do metod jak do metod statycznych, a w nich nie możesz się odwoływać do $this. Po pierwsze zmień te metody na statyczne, i zmienną lang też daj statyczną i przy odwołaniu zamiast $this->lang to self::$lang


--------------------
Go to the top of the page
+Quote Post
szmerak
post
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Dziękuje ci bardzo za pomoc Wszystko działa już jak powinno tylko teraz mam problem ze zmienną statyczną lang...
Konstruktor nie chce nadać jej wartośći a co z tym idzie plik się nie wczytuje z langów jak widać w metodzie wyzej

source konstruktora
  1. function __construct()
  2. {
  3. self::$lang = "pl-lang";
  4. }


//dobra już wsumie to zrobiłem
nadałem lang odrazu = "pl-lang";

Ten post edytował szmerak 3.08.2011, 11:01:27
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jeżeli masz klasę statyczną, statyczne metody i zmienne to trudno, abyś mógł używać konstruktora.

Konstruktor jest uruchamiany automatycznie przy TWORZENIU obiektu, którego nigdzie nie tworzysz, jasne? smile.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 Aktualny czas: 20.08.2025 - 19:55