Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [OOP] Wywołanie klasy, po jej nazwie., Czyli jak mając nazwę klasy wywołać ją ?
sniezny_wilk
post 20.03.2008, 00:47:10
Post #1





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Witam,

gdzie w OOP w "magicznych metodach" chyba kiedyś widziałem taką funkcję.. chodzi mi o to, że mam np. klika klas:

  1. <?php
  2. class Jakas
  3. {
  4. //....
  5. }
  6. ?>


I potem załóżmy podaję jakiś parametr w postaci string'a który zawiera nazwę klasy. Wszystkie klasy mają taką samą strukturę, jak zrobić coś takiego:

  1. <?php
  2. require_once('classes/'.$parametr'.class.php');
  3.  
  4. // teraz chciałbym stworzyć nowy obiekt
  5.  
  6. $obiekt = new // no właśnie i co tutaj wstawić ?
  7. ?>


Czy są jakieś metody lub funkcję w OOP PHP'a które to wspomagają ? Czy muszę jakiegoś evala użyć ?

Ten post edytował sniezny_wilk 20.03.2008, 00:48:36


--------------------
Go to the top of the page
+Quote Post
Sabistik
post 20.03.2008, 00:53:33
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


  1. <?php
  2. $obiekt = new $parametr();
  3. ?>

?
Go to the top of the page
+Quote Post
sniezny_wilk
post 20.03.2008, 01:03:09
Post #3





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


sciana.gif O niee.. cofam się w rozwoju chyba :/ nawet nie sprawdziłem, czy tak można.. wydawało mi się to niemożliwe. Dzięki Sabistik biggrin.gif


--------------------
Go to the top of the page
+Quote Post
sobstel
post 20.03.2008, 09:59:22
Post #4





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


jeśli konstruktor przyjmuje jakieś argumenty to musisz użyć call_user_func_array i Reflection:

  1. <?php
  2. $args = array($arg1, $arg2);
  3.  
  4. call_user_func_array(
  5. array(new ReflectionClass($className), 'newInstance'), $args
  6. );
  7. ?>


Ten post edytował sopel 20.03.2008, 09:59:46


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
dr_bonzo
post 20.03.2008, 11:14:45
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


E-e, proste
  1. <?php
  2. $x = new $costam( $p1, $p2 );
  3. ?>
tez dziala smile.gif


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
sniezny_wilk
post 20.03.2008, 12:44:22
Post #6





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


@sopel - trochę przekombinowałeś winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
-=Peter=-
post 20.03.2008, 14:16:46
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Sopel nic nie przekombinował, tylko podał rozwiązanie dla dowolnej liczby argumentów, a nie jak dr_bonzo tylko i wyłącznie dla dwóch...


--------------------
Go to the top of the page
+Quote Post
siemakuba
post 20.03.2008, 14:20:15
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


Cytat(-=Peter=- @ 20.03.2008, 14:16:46 ) *
Sopel nic nie przekombinował, tylko podał rozwiązanie dla dowolnej liczby argumentów, a nie jak dr_bonzo tylko i wyłącznie dla dwóch...

Nie masz racji.

Zamykam celem powstrzymania czczych dyskusji nad rozwiązanym problemem.

pozdr.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.05.2024 - 19:54