Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z przekazywaniem zmiennych
Forum PHP.pl > Forum > Przedszkole
maryaan
witam, mam taki kod
  1. <?
  2. class costam {
  3. function getCostam($tId){
  4. switch($tId){
  5. case 'id1':
  6. return 'kolor: $zmienna'; // lancuch
  7. break;
  8. }
  9. }
  10. }
  11.  
  12. $zmienna = 'fdsafds'; // moja zmienna
  13. echo costam::getCostam('id1'); // wyswietlanyLancuch
  14. ?>
teraz rzecz jasna wyswietla sie "kolor: $zmienna", jesli lancuch zapisze w "" to wyswietli sie tylko "kolor: ". W jaki sposob wymusic przetworzenie lancucha tuz przed wyswietleniem go? tzn zeby return przekazywal caly lancuch z nazwami zmiennych a w miejscu gdzie jest wyswietlanyLancuch zostaly do niego podstawione zmienne ktore beda wtedy "w zasiegu"
cadavre
Klasy są hermetycznie - nie możesz zmiennej przekazać po prostu ją definiując do klasy.
Możesz np tak:
  1. <?
  2. class costam {
  3. public $zmienna;
  4. function getCostam($tId){
  5. switch($tId){
  6. case 'id1':
  7. return "kolor: " . $this->zmienna;
  8. break;
  9. }
  10. }
  11. }
  12.  
  13. $obj = new costam;
  14. $obj->zmienna = 'czerwony';
  15. $obj->getCostam('id1');
  16. ?>


Poza tym: '$zmienna' to tylko ciąg o treści $zmienna - nie można zmiennych wstawiać do cudzysłowów pojedynczych.

Poczytaj o podstawach:
http://www.php.net/manual/pl/language.oop.php
http://www.php.net/manual/pl/language.oop5.php
maryaan
no ale wlasnie chodzi o to zeby z klasy przekazywac caly lancuch (z nazwami zmiennych w srodku) a dopiero poza klasa go przetwarzac (tzn zamieniac $costamcostam na wartosc). Da sie to wykonac? Tzn zmusic php zeby ponownie przetworzylo lancuch znakow?
cadavre
Nie rozumiem Cię zupełnie albo Ty nie rozumiesz logiki OOP.
W 12. linijce definiowałeś $zmienna i chciałeś żeby ją wyechowano meotdą getCostam()? To po co cała ta struktura klasy skoro definiujesz coś poza klasą ładujesz to do klasy i chcesz odebrać poza klasą spowrotem?

Jak chcesz to dodaj drugi parametr do metody i tak to przekażesz... Ale po co wtedy cały ten switch?
maryaan
Cytat(cadavre @ 5.01.2007, 23:47:21 ) *
W 12. linijce definiowałeś $zmienna i chciałeś żeby ją wyechowano meotdą getCostam()?
nie, to wiem ze jest niewykonalne smile.gif moze inaczej, bo namieszalem ta klasa ktora de facto nie ma tu znaczenia, mam kod:
  1. <?php
  2. $zmienna = 123;
  3. $zmienna2 = 234;
  4. $string = "jakis string ze $zmienna zmiennymi $zmienna2";
  5. $string = lol();
  6. echo $string;
  7. ?>
w przegladarce wyswietli sie
  1. jakis string ze 123 zmiennymi 234
to jest ok, teraz zamiast "statycznej" deklaracji stringa, laduje go za pomoca funkcji
  1. <?php
  2. function lol(){
  3. return 'jakis string ze $zmienna zmiennymi $zmienna2';
  4. }
  5. $zmienna = 123;
  6. $zmienna2 = 234;
  7. $string = lol();
  8. echo $string;
  9. ?>
tyle ze dzieki apostrofom z deklaracji, przegladarka wyswietla
  1. jakis string ze $zmienna zmiennymi $zmienna2
chcialbym tylko zeby ten string zachowal sie tak samo jak ten ktory byl w tym miejscu deklarowany.

W ostatecznosci pojade po nim str_replace ale to kolejne utrudnienie sad.gif

wydaje mi sie ze znalazlem idealne rozwiazanie, mianowicie chodzi o funkcje eval

dziekuje za pomoc smile.gif
cadavre
Wewnątrz funkcji lol() - global $zmienna, $zmienna2?
Cysiaczek
Jeśli dobrze zrozumiałem, to chcesz przekazywać zmienne poprzez string...

Jeśli to ma służyć w jakikolwiek sposób logice aplikacji (tzn wartości tych zmiennych w stringu będą zamieniane w dalszej części systemu), to ja głosuję za uznaniem tego najidiotyczniejszym rozwiązaniem nowego roku. Jeśli to ma być coś na wzór systemu szablonów, to byłoby do przyjęcia, gdyby nie fakt, że jest wynajdywaniem koła na nowo i dlaczego nie użyć po prostu print, skoro zmienne i tak mają postac zmiennych php ($zmienna, a nie {$zmienna})?
Dobrze, że kombinujesz, ale tym razem Ci nie wyszło laugh.gif

Pozdrawiam.
maryaan
moze i najidiotyczniejszym, nie przecze. Nie kazdy zaczynal od idealnych pomyslow tongue.gif Wieczorem bede mogl juz okreslic czy to spelnia swoje zadanie tak jak w zalozeniach czy nie, z pierwszych testow wynika ze jak najbardziej tak.
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.