2016-03-31 20 views
0

Bir yöntemde bir değişkene, başka bir yönteme (işlev olarak) atamaya çalışıyorum.OOP: Bir yöntemin değişkeni atama

Yani "A" yönteminde "B" yöntemini işlev olarak atamak istiyorum.

Bunu denedim, ancak var_dump yanlıştır ve $ fn parametresi dize olarak değerlendirilir (Sanırım).

<?php 
class MyClass { 

    public function call($fn) { 
     var_dump(is_callable($this->$fn)); 
    } 

    public function required($str) { 
     return empty($str); 
    } 

} 

$class = new MyClass; 
$class->call('required'); 
+0

Bir değişken olarak saklamak istediğiniz bir yöntem veya yöntem grubu için ayrı bir sınıf oluşturmanızı öneririm. O zaman sadece bu sınıfı bir değişkene dahil edin. Çok daha nemli ve daha kolay. – Juakali92

cevap

1

bu konuda gidiş için muhtemelen daha iyi bir yöntem ama bu bence ne sonra konum çeşit: Bunu istiyorum neden

class MyClass 
{ 
    public function call($function, $parameters = null) 
    { 
     if (method_exists(__CLASS__, $function)) { 
      return $this->{$function}($parameters); 
     } 
    } 

    public function required($string) 
    { 
     return empty($string); 
    } 
} 

$class = new MyClass; 
var_dump($class->call('required', 'yo')); 

tamamen kullanmamak ve orada hayal muhtemelen nihai hedefinize ulaşmak için daha iyi bir yöntemdir, ancak yukarıda en azından gereksiniminizi karşılamalıdır. Parametreleri nasıl ele aldığı sınırlıdır, ancak bir başlangıç ​​noktasıdır.

+0

Harika, bununla çözüldü. – Grork