2016-03-31 17 views
0

メソッドの変数に代入しようとしています。別のメソッドを(関数として)割り当てようとしています。OOP:メソッドに変数を代入する

"A"メソッドでは、 "B"メソッドを関数として割り当てたいと思うかもしれません。

私はこれを試しましたが、var_dumpはfalseで、パラメータ$ fnは文字列として扱われます(私は思う)。

おそらく
<?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

私は、変数として保存するメソッドまたはメソッドのグループのための別のクラスを作成することをお勧めします。次に、そのクラスを変数に導入するだけです。もっとやさしく簡単です。 – Juakali92

答えて

1

このついて行くためのより良い方法が、私は、これはあなたが後にしているものの一種だと思う:あなたはこれをしたい理由

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')); 

は全く使用しない、と私はそこにあると想像おそらくあなたの最終目標を達成するためのより良い方法ですが、上記は少なくともあなたの要件を満たす必要があります。パラメータをどのように扱うかは限定されていますが、それは出発点です。

+0

素晴らしい、これで解決。 – Grork