Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]tworzenie obiektu klasy
jakisdziad
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.02.2011

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


  1. $name = 'bar'; // np wartosc otrzymana przez funkcjie
  2. $class = 'foo_'.$bar;
  3. $object = new $class();

Problem polega na tym ze: nazwe klasy tworza dwa oddzielne stringi i musze uzyc zmiennej $class ktora je "laczy". Czy jest jakas gotowa funkcja lub moze sposob na ominiecie zmiennej $class?
  1. $object = new 'foo_'.$bar();

Nie dziala smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. new {'foo_'.$bar};


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Takie potworki mimo iż w PHP są legalne to strasznie paskudzą kod... Użyj normalniejszych mechanizmów, tj. refleksji:
  1. $ref = new ReflectionClass('foo_' . $bar);
  2. $obj = $ref->newInstance();
Go to the top of the page
+Quote Post
cojack
post
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Ta, nie długo jak będziemy tak robić jak Crozin piszę, to zamiast wywołania zwyczajnie jakiejś funkcji to wszyscy będą robić call_user_func sleep.gif nonsens.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


A teraz @cojack przeczytaj wątek jeszcze raz, zobacz czego on w ogóle dotyczy. Może uda Ci się zrozumieć jak bezsensowny jest Twój komentarz.
Go to the top of the page
+Quote Post
jakisdziad
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 5.02.2011

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


  1. new {'foo_'.$bar};

Parse error: syntax error, unexpected '{'

  1. $ref = new ReflectionClass('foo_' . $bar);
  2. $obj = $ref->newInstance();

I fajnie, ale tworzy obiekt jako ReflectionClass Object zamiast foo_bar Object a poza tym nie mozna przekazac nic do konstruktora...

No nic, chyba zostane przy tej dodatkowej zmiennej, dziekuje za pomoc!
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(jakisdziad @ 5.02.2011, 19:40:44 ) *
a poza tym nie mozna przekazac nic do konstruktora...

Fajnie, że w ogóle wiesz co to manual.
http://pl.php.net/manual/en/reflectionclass.newinstance.php

Co do mojego sposobu faktycznie się pomyliłem. Przepraszam.


--------------------
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


@Crozin dobrze wiem czego dotyczy topic, Twoje rozwiązanie jest bez sensu.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
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: 21.08.2025 - 17:19