2016-03-26 14 views
3

Bu PHP7 içinde PHP5 ancak ölü var çalışan bir durum var:Değişken fonksiyon PHP 7 ile uyumluluk ve PHP5

/* load batch processing data into variable */ 
$args = get_option('leads_batch_processing'); 
/* process batches */ 
self::$args['method']($args); 

Ve bu PHP7 çalışır ancak ölü var PHP5:

/* load batch processing data into variable */ 
$args = get_option('leads_batch_processing'); 
/* process batches */ 
self::{$args['method']}($args); 

Nasıl Değişken işlevini her iki PHP ortamında da başarıyla kullanırım? PHP sürümüne dayanan bir koşul kullanmayı denedim ama PHP7 sürümünün sözdizimi PHP5 hataları bu yüzden gidemem.

Ne yapabilirim? Benzer Yorum önerilen ne kadar

$method = $args['method']; 
$this->$method($args); 

Veya call_user_func() kullanın::

+0

[call_user_func)] (http://php.net/manual/en/function.call-user-func.php)? –

+0

Bunu bir cevap olarak önerebilir misiniz? $ Args'ın üzerinde olması durumunda, özel veya statik bir değişken değildir. Ama $ args içinde ['method'] çağrı sınıfında bulunan bir işlev adı vardır (self: :) – atwellpub

+0

İkinci kod hem PHP 5 hem de PHP 7 üzerinde çalışmalıdır. Bazı eski PHP'de test etmediğinizden emin olun. sürüm (5.3 gibi). – NikiC

cevap

2

sözdizimi hatası neden olmaz düzenli değişkeni, bunu atama (

call_user_func(
    array($this, $args['method']), 
    $args 
);