Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcje
Forum PHP.pl > Forum > PHP
Spirit86
Witam, mam następujący problem, kiedyś pisałem CMS na podstawie funkcji, wydało mi się to jednak strasznie amatorskie, nieczytelne i niewygodne, więc postanowiłem opierać wszystko na klasach. Problem leży w tym, że nie chce mi się zmieniać każdej funkcji, a jest ich dużo, która drukuje jakiś tekst na taką, która ten tekst returnuje. Czy istnieje jakaś możliwość, aby funkcja typu:
  1. <?php
  2.  
  3. function jakas(){
  4. echo 'asdads';
  5. }
  6. $ma_byc_zwrocona = jakas();
  7.  
  8. ?>

była odpowiednio przypisana do tejże zmiennej. Czyli innaczej mówiąc, czy da się zmienić, nie ingerując w kod funkcji, aby zwracała wartość, a nie ją drukowała ?!
chmolu
  1. <?php
  2. function jakas(){
  3. return 'asdads';
  4. }
  5. ?>
Spirit86
Cytat(Spirit86 @ 2005-03-05 21:47:26)
Czyli innaczej mówiąc, czy da się zmienić, nie ingerując w kod funkcji, aby zwracała wartość, a nie ją drukowała ?!

czytaj....
SongoQ
Nie da sie!

echo to echo return to return.

Co przychodzi mi do glowy to mozna by cos z buforowanie pomyslec - ale czy jest sens tak kombinowanie. Na Twoim miejscu bym przepisal, przynajmniej bedzie prawiłowo, czytelenie.

Twoj CMS jak byl oparty tylko na funkcjach i chesz zmienic go na OOP, to nie wystarczy tylko te funkcje upakowac w klasy, licz sie z tym ze w OOP koncepcja jest inna i wymaga to "totalnej" przebydowy kodu.
Spirit86
masz rację, tylko, że zmiany są powolne, no i gdy np. napiałem driver bazy danych, to każde pytanie teraz muszę/powinnienem zamieniać na nowo powstałą klasę, nie tak jak przedtem pisania ciągle tych samych komend, beż żadnych statystyk itp. winksmiley.jpg.
chciałem oszczędzić trochę funckje odpowiadającą za layout strony głównej, zrobiłem coś na wzór PHPNuke(theme/.../index.php), tylko, że wydaje mi się to nieczytelne dla osób nie znających php :|, więc chciałem to zmienić na coś w stylu tpl., tak jak funkcje opisujące wygląd np. tabeli z newsami.
SongoQ
Jak juz stosujesz classy to poczytaj o MVC bo pozniej moze sie twoja koncepcja, podejscie zmienić.

Taka mała uwaga.
kasa
Da sie.. chyba:)
  1. <?php
  2.  
  3.  
  4. jakasfunckcjazecho();
  5. $cos = ob_get_contents();
  6.  
  7.  
  8. ?>


Tak gdzies czytalem... Nigdy nie sprawdzalem czy dziala smile.gif
SongoQ
Czyli to co powyżej pisałem da się zrealizować, kwestia sprawdzenia i przemyślenia czy takie rozwiązanie na pewno będzie dla Ciebie dobre.
kasa
No dokładnie.. Ten numer z buforowaniem to stosowac w skrajnych wypadkach smile.gif Ale warto wiedzieć, że takie coś istnieje, w szczególności gdy nie możemy zmienić ciała funkcji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.