Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] zmienne zmiennych w zastosowaniu do funkcji
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Mam dwie funkcje:
  1. <?php
  2. function atest()
  3. {
  4. echo '<br/>aaaaaaaaaaaaaaatest<br/>';
  5. }
  6.  
  7. function btest()
  8. {
  9. echo '<br/>bbbbbbbbbbbbbbbbtest<br/>';
  10. }
  11. ?>


oraz zmienną:
  1. <?php
  2. $ktoraFunkcja = 'a';
  3. ?>


Chciałbym zrobić coś takiego, że jeśli $ktoraFunkcja = 'a' to wywoływana jest fukcja atest(), jeśli $ktoraFunkcja = 'b' to wywoływana jest fukcja btest() poprzez zapis w stylu:

  1. <?php
  2. $ktoraFunkcja.test();
  3. ?>


Tylko, że to nie zadziała. Nie wiem jak to zapisać..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
siemakuba
post
Post #2





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

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


  1. <?php
  2. $ktoraFunkcja .= 'test';
  3. $ktoraFunkcja();
  4. ?>

?

  1. <?php
  2. call_user_func($ktoraFunkcja.'test');
  3. ?>

?

pozdr.
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(siemakuba @ 26.02.2007, 01:14:36 ) *
  1. <?php
  2. call_user_func($ktoraFunkcja.'test');
  3. ?>

Drugi sposób lepszy. Ale nie da się tego zastosować przy moim problemie. Muszę opisać dokładniej.

Mam dwie klasy:
Cytat
MysqlException
PostgresqlException


Właściwość statyczna Config::$DbType przechowuje wartości: 'Mysql' lub 'Postgresql'
(Dzięki temu będę mógł zmieniać bazę danych z której korzystać będzie aplikacja bez wprowadzania zmian w kodzie).


Chciałbym uzyskać coś podobnego:
  1. <?php
  2. try
  3. {
  4. // jakaś operacja na bazie
  5. }
  6. catch (Config::$DbType.Exception $e)
  7. {
  8. }
  9. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





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

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


AbstractFactory

klasy MysqlException, i PGEx... niech dziedzicza z jednej wspolnej, DBExc

Konfigurujesz abstract factory, ktora ci zwraca Factory dostosowana do wybranej bazy danych, ktora to zwraca obiekty podklas takich jak
BDException i innych ktorych uzywasz.

I wtedy kod sie nic nie zmienia, i nie masz tych zmiennych zmniennych rozsianych po kodzie (+dziala podpowiadanie kodu).

Cos w tym stylu
  1. <?php
  2. try
  3. {
  4. $dbFactory = AbstractDBFactory( Config::$dbType );
  5. $post = new Post( $dbFactory->getConnection() );
  6. ....
  7.  
  8. ...
  9. $post->save();
  10. }
  11. catch ( DBException $e ) // i lapiesz wyjatek nadklasy, a nie szczegolny, jak PGException
  12. {...}
  13. ?>
Go to the top of the page
+Quote Post
Jarod
post
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Mam główną klasę:

  1. <?php
  2. class CubeException extend Exception
  3. {
  4. //...
  5. //...
  6. }
  7.  
  8. class MysqlException extend CubeException
  9. {
  10. }
  11.  
  12. class PostgresqlException extend CubeException
  13. {
  14. }
  15. ?>


a utworzone połączenie z bazą trzymam w Registry. To prawie to samo co Ty podałeś a nie działa..

EDIT:

Cytat(dr_bonzo @ 26.02.2007, 09:41:39 ) *
(...)
klasy MysqlException, i PGEx... niech dziedzicza z jednej wspolnej, DBExc
(...)
// i lapiesz wyjatek nadklasy, a nie szczegolny, jak PGException


To po co w ogóle klasy MysqlException, i PGEx ?

Ten post edytował J4r0d 26.02.2007, 17:13:55
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





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

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


Cytat
To po co w ogóle klasy MysqlException, i PGEx

Zeby ladnie wygladalo, bo i tak bedziesz lapal tylko ich nadklasy (DBExc.)


Cytat
To prawie to samo co Ty podałeś a nie działa..

Prawie robi....
pokaz choc troche kodu
Go to the top of the page
+Quote Post
Jarod
post
Post #7





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(dr_bonzo @ 28.02.2007, 01:24:35 ) *
Zeby ladnie wygladalo, bo i tak bedziesz lapal tylko ich nadklasy (DBExc.)

Może lepiej po prostu zrezygnować z klas MysqlException i PostgresqlException i zrobić jedną wspólną DatabaseException?
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: 26.09.2025 - 10:26