Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dostęp z klasy do funkcji w innej klasie
Forum PHP.pl > Forum > Przedszkole
Pronigo
Witam serdecznie, mam taki uproszczony kod swojego skryptu:

  1. <?php
  2. class pierwsza {
  3.  function zrobto($co) {
  4. echo $co;
  5.  }
  6. }
  7.  
  8. $obiekt = new pierwsza;
  9.  
  10. class druga {
  11. function __construct() {
  12. $obiekt->zrobto('a takie cos');
  13. }
  14. }
  15. ?>


Ten skrypt oczywiscie nie dziala, ale moze ma ktos jakis pomysl jak poprawnie wywolac funkcje zrobto() z innej klasy? Dodam, ze sposob pierwsza::zrobto() odpada, musi byc wykorzystany $obiekt.

Bardzo dziekuje za pomoc smile.gif
webdice
  1. <?php
  2. class pierwsza {
  3.  function zrobto($co) {
  4. echo $co;
  5.  }
  6. }
  7.  
  8. $obiekt = new pierwsza;
  9.  
  10. class druga {
  11. function __construct(pierwsza $obiekt) {
  12. $obiekt->zrobto('a takie cos');
  13. }
  14. }
  15. ?>


Przy wywoływaniu klasy druga w konstruktorze jako argument przekazujesz obiekt klasy pierwsza.
NoiseMc
Ewetualnie:
  1. <?php
  2. class pierwsza {
  3.  function zrobto($co) {
  4. echo $co;
  5.  }
  6. }
  7.  
  8. class druga {
  9. function __construct() {
  10. $obiekt = new pierwsza ();
  11. $obiekt->zrobto('a takie cos');
  12. }
  13. }
  14. ?>
jarek_bolo
Co prawda uzależnia nam to jedną klasę od drugiej i burzy niezależność obiektów, ale domyślam się, że czasem tak po prostu musi być.

Zauważ, że teraz gdzie kolwiek będziesz chciał użyć klasy druga będziesz musiał includować klase pierwsza.

A może spróbuj zwrócić sam wynik działania metody pierwsza::zrobto() do klasy drugiej?? Jeśli tak możesz zrobić to zachowasz niezależność klas i ich ewentualne niezależne od siebie ponowne użycie w innym projekcie.

No ale tak jak pisałem, wszystko zależy co to za klasy. Być może jest też tak, że one są z góry skazane na współprace ze sobą (są jednym pakietem), więc wtedy odwoływanie się do obiektu jednej klasy w obiekcie klasy drugiej i tak nie zmienia faktu, że klasy muszą być używane zawsze razem.
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.