Anında PHP işlev adı

4 Cevap

D: Ben oldukça aptalca PHP sorum var! Ben şu ifadeyi kolaylaştırmak istiyorum:

function hello_input() {
    return 'Hello World';
}

$helper = 'hello';

$helper = $helper . '_input';

$data = $helperinput();

Ben basitleştirmek istiyorum belirli kısmı doğru işlevini çağırır $ helper'a _input ekleyerek olduğunu.

Ben böyle bir şey düşündüm ama çalışmıyor:

$data = $helper. 'input'();
or
$data = $helper. 'input' . ();

Herhangi bir fikir?

Thanks, Max

4 Cevap

Kullan call_user_func , e.g. $data = call_user_func($helper.'input');.

$helper = 'hello_';
$data = $helper.'input';
call_user_func($data);

Bu size orada yolun en almalısınız. İyi şanslar!

Docs here

Eğer bir giriş dayalı kodu çağırmak için bekliyor musunuz? Bunu yapmak için çalışın asla. Bu insanlara rasgele kod çalıştırmasına şans verir. Eğer oldukça nasıl göremiyorum bile, hala saldırı potansiyel bir yöntem.

Ne muhtemelen istediğiniz bir switch deyimi (ya da deyimleri eğer zincirleme) bir giriş maç ve doğru fonksiyonunu sevk olduğunu.

Önce bir dizeye bütün işlev adını alın.

$helper = 'hello';
$func = $helper . '_input';
$data = $func();

PHP bu çağrıları variable functions. Ayrıca bakınız variable variables.