[php] funkcje w stringu

0

kod:

<?php echo "$x";?>

zwraca wartosc zmiennej $x. czy mozna robic podobnie z funkcjami? chodzi mi o to, ze np jak napisze echo "$this->jakas_funkcja()"; to wydrukuje na ekranie wartosc zwrocona przez funkcje.

0

nie wiem czy o to chodzi, ale używacie return coś takiego czyni :)

0

no nie o to chodzi. mam klase np users().w srodku klasy mam funkcje name($d), kotra zwraca imie uzytkownika. normalnie jak chce wydrukowac jakis napis, robie tak:

<?php echo 'Witaj '.$users->name(2); ?>

Pytanie brzmi "Czy da sie zrobic inaczej? mysle o tym, zeby wsadzic nazwe funkcji do string'a, np: <?php echo 'Witaj $users->name(2)'; ?>

 Oczywiscie ten kod nie dziala.
0

może {}? gdzies widzialem przyklad z tym, ale może się mylę.
daj print("Witaj {$users->name(2)}");

0

no tez nie dziala

0
Karolaq napisał(a)

no nie o to chodzi. mam klase np users().w srodku klasy mam funkcje name($d), kotra zwraca imie uzytkownika. normalnie jak chce wydrukowac jakis napis, robie tak:

<?php echo 'Witaj '.$users->name(2); ?>

Pytanie brzmi "Czy da sie zrobic inaczej? mysle o tym, zeby wsadzic nazwe funkcji do string'a, np: <?php echo 'Witaj $users->name(2)'; ?>

 Oczywiscie ten kod nie dziala.


nie rozumiem problemu :0

```php
$string = 'Witaj ' . $users->name(2); 
echo($string);
?>
0

to byl tylko taki przyklad. mi chodzi tylko o to czy jest to mozliwe.
caly czas probuje rozwiazac problem http://4programmers.net/Forum/viewtopic.php?id=70927
jak mam funkcje echo preg_replace($exp, '$tpl->read_file($1)', $text); takie cos nie dziala. laczenie stringow nie wchodzi w gre, bo $1 to nie zmienna.

0
Karolaq napisał(a)

jak mam funkcje echo preg_replace($exp, '$tpl->read_file($1)', $text); takie cos nie dziala.

zainteresuj sie moze funkcja preg_replace_callback() chociaz nie wiem czy o to Ci chodzi...

[dopisane]

aha... wywolanie w preg_replace_callback funkcji z jakiejs klasy wyglada troszke inaczej, przyklad:

<?php

  preg_replace_callback($reg_exp, array($tpl, 'read_file'), $text);

?>
0
Karolaq napisał(a)

jak mam funkcje echo preg_replace($exp, '$tpl->read_file($1)', $text); takie cos nie dziala.

a jak to ma ci dzialac gdy masz $tpl->read_file($1) w pojedynczych uszach [green]

0

w ramach tematu wywolywania zmiennych/funkcji ze stringa:

do zmiennych stosuje sie cos takiego: ${'nazwa_zmiennej'}

do funkcji stosuje sie funkcje call_user_func() (patrz: Manual)

a jesli chcemy wowalac metode jakiegos obiektu to, przyklad:

<?php

  class test {
    function dupa() {
      echo 'blada';
    }  
  }  

  $test = new test();

  // normalne wywolanie metody dupa

  $test->dupa();

  // hardcorowe wywolanie metody dupa ;)

  $obj = 'test';

  $method = 'dupa';

  call_user_func(array(${$obj}, $method));

?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1