Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP]Klasa w klasie
Forum PHP.pl > Forum > Przedszkole
infoo1
1. Jak zrobić klasę w klasie (czyli $c1->c2->func())? Robię przez utworzenie w c1 zmiennej c2=new c2();. Jest jaki¶ poprawniejszy sposób?
2. Jak odwołać się z funkcji func (w klasie c2) do func2 w klasie c3 ($c1->c3->func2())? Robię to przez global $c1; i wtedy $c1->c3->func2(). Jest jaki¶ poprawniejszy sposób?
skowron-line
Chodzi tobie o dziedziczenie questionmark.gif
Można również przekazać obiekt klasy jako parametr konstruktora.
Fifi209
Napisz jako¶ dokładniej co chcesz zrobić (najlepiej na przykładzie).

Z tego co wyczytałem, to albo jak napisał kolega jako parametr w konstruktorze albo wykorzystać wzorzec singleton.
viking
  1. <?php
  2. class x {
  3.  $private $_t;
  4.  
  5.  public function getCos(){
  6.    return $this->_t; //singleton czy co¶ tam; t = new y
  7.  }
  8. }
  9.  
  10. $x->getCos()->test();
  11. ?>


O to chodzi?
infoo1
Chodzi o to, czy to jest poprawne:
  1. <?php  
  2.    class c1
  3.    {
  4.        public function __construct()
  5.        {
  6.            $this->c2    =    new c2();
  7.            $this->c3    =    new c3();
  8.            return true;
  9.        }
  10.    }  
  11.    
  12.    class c2
  13.    {
  14.        public function func()
  15.        {
  16.            return;
  17.        }
  18.    }  
  19.    
  20.    class c3
  21.    {
  22.        public function func()
  23.        {
  24.            global $c1;
  25.            $c1->c2->func();
  26.            return;
  27.        }
  28.    }  
  29.    
  30.    $c1    =    new c1();
  31.    $c1->c3->func();            
  32. ?>
blooregard
U mnie zadziałało, ale szczerze powiedziawszy, tak sie nie robi, bo masz sieczkę w kodzie po jakim¶ czasie.
Tak jak napisali Koledzy wcze¶niej: albo dziedziczenie, albo składow± klasy robisz obiekt innej i przy jego pomocy odwołujesz się do jego metod.
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.