Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dynamiczne klasy OOP
webJ@cob
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 28.02.2007
Skąd: Kraków

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


Witam,

Mam deklarację:
$aktualnosci = new Aktualnosci . $sesja_lang->lang();

Która wywala mi błąd. Gdy napiszę:

$akt='Aktualnosci'.$sesja_lang->lang;
$aktualnosci = new $akt();

to jest ok.

ja zmodyfikować pierwszy przypadek to jednej linijki kodu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
matixrr
post
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 14.04.2007

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


Może:
  1. <?php
  2. $aktualnosci = 'new Aktualnosci . $sesja_lang->lang()';
  3. ?>

?
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. $aktualnosci = new Aktualnosci{$sesja_lang->lang}();
  4.  
  5. ?>
Pominę to że pomysł takich klas jest po prosty głupi. Potwornie głupi.
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(webJ@cob @ 19.02.2009, 18:20:29 ) *
ja zmodyfikować pierwszy przypadek to jednej linijki kodu?


  1. <?php
  2. $akt='Aktualnosci'.$sesja_lang->lang; $aktualnosci = new $akt();
  3. ?>

(IMG:http://forum.php.pl/style_emoticons/default/thumbsupsmileyanim.gif)

A na poważnie: wydaje mi się, że nie da się tego osiągnąć krótszym zapisem.

mike:
Twój kod wywala:
Cytat
Parse error: syntax error, unexpected '{'


Ten post edytował phpion 19.02.2009, 16:27:57
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(phpion @ 19.02.2009, 16:26:36 ) *
mike:
Twój kod wywala:
Hmm, a myslałem, że tak zadziała. No nic. I tak pomysł jest bzdurny :-)
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(mike @ 19.02.2009, 18:31:30 ) *
I tak pomysł jest bzdurny :-)

Zgadzam się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) hehe.

Swoją drogą: w ten sposób działa:
  1. <?php
  2. class Aktualnosci_Pl {
  3. }
  4.  
  5. $lang = 'Pl';
  6.  
  7. eval('$aktualnosci = new Aktualnosci_'.$lang.';');
  8.  
  9. print_r($aktualnosci);
  10. ?>

Co nie zmienia faktu, że jest to głupie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
webJ@cob
post
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 28.02.2007
Skąd: Kraków

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


Moim zdaniem nie jest to w aż tak głupi pomysł z racji stosowania FrameWorka i konieczności stosowania dynamicznych nazw klas, obiektów, kontrolerów i widoków.
Niemniej jednak dziękuję za pomoc i po części przyznaję rację.

Jak sie pracuje po 17h dziennie i do tego zestaw kilkanastu kaw to czasami rodzą się dziwne pomysły, mutanty.

Pozdrawiam.

Ten post edytował webJ@cob 19.02.2009, 20:22:10
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





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

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


Zawsze mozesz cos takiego machnac
  1. <?php
  2. $lang = $session->lang();
  3. $objectFactoryWhatever = new ObjectFactory($lang);
  4. $article = $objectFactoryWhatever->new( 'Article' );
  5. ?>


ladniej wyglada, i nie musisz 1000ce razy przekazywac $lang'a.
Go to the top of the page
+Quote Post
Crozin
post
Post #9





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

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


@webJ@cob: głupie nie jest to, że tworzysz dynamicznie nazwę klasy, której obiekt chcesz utworzyć, tylko to jakie Ty klasy masz.
AktualnosciPl, AktualnosciEn, AktualnosciDe
Co to ma być? Tworzysz jedną, która ma metodę, w której podaje się język, albo nawet sama sobie odczytuje go w swoim wnętrzu
  1. <?php
  2. class Actualnosci{
  3.  public function ustawJezyk($jezyk){
  4.    $this->jezyk = $jezyk;
  5.  }
  6. }
  7.  
  8. //albo
  9.  
  10. class Actualnosci{
  11.  public function __construct(){
  12.    $this->jezyk = Registry::get('session')->lang(); //czy w jakis inny sposob pobierasz sobie jezyk
  13.  }
  14. }
  15. ?>
PS. Nazwy (zmienny, klas, funkcji) powinieneś mieć w języku ang.
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: 23.08.2025 - 06:57