Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][OOP]Klasa w klasie
infoo1
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
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%)
-----


Chodzi tobie o dziedziczenie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Można również przekazać obiekt klasy jako parametr konstruktora.
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





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

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


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.
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


  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?
Go to the top of the page
+Quote Post
infoo1
post
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


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. ?>
Go to the top of the page
+Quote Post
blooregard
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.
Go to the top of the page
+Quote Post

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: 2.10.2025 - 20:22