2017-01-24 10 views
0

だから私は、このクラスがあります。抽出物の機能

class MyClass { 
    public static function printMessage($text) { 
     echo $text; 
    } 
} 

をそして、私はこれらの方法でそれを使用したいと思います:

MyClass::printMessage('test'); // test 
printMessage('test'); // test 

のでprintMessageがメソッドとして機能し、またようになります機能。 PHPで可能なことはありますか? (クラスのためのオートロードのような何か)私は良い解決策や答えを見つけることができません - no。私にとっては必要ではない、私はちょうど興味があるので、同じ関数構造を2回書く必要はありません。私はpublic static function printMessage($text) { return printMessage($text); }のようなコードを使用することができますが、それは私が探しているものではありません。

+0

グローバル・ファンクションとして定義しない場合は、グローバル・ファンクションと呼ぶことはできません。 – deceze

+1

しかし、グローバルスコープで 'MyClass :: printMessage( 'test'); – arkascha

+0

そのようなものに対して 'define'文を使うことができますが、再び:_why_? – arkascha

答えて

0

あなたのクラスの関数はグローバル関数にラップ/マッピングすることができます:

function printMessage($string){ 
    MyClass::printMessage($string); 
} 

しかしIs something like that possible with PHP?いいえ。 PHPでは関数呼び出しが一意である必要があります。

あなたもこれを行うことができます:

$printMessage = function($string){MyClass::printMessage($string);}; 

は速記を取得するために$printMessage($string);

しかし、最高は世界全体の機能を回避することです。 次のレベルのコーディングを行う場合は、静的なクラスメソッドも回避する必要があります。

+1

私はこの答えを書くことを考えましたが、これはすべて質問の最後にあるものの逆です。私はそれがOPが望んでいるとは思わない。 – Machavity

+0

@Machavityええ、私はあまりにも遅くQの最後に有線のものを指摘した。しかし、最後の1つではありません;))) – JustOnUnderMillions

0

あなたはラッパー使用することができ、次のいずれか

public function printMessage($text){ 
    MyClass::printMessage($text); 
} 

するか、あなたが探しているものではないようですこれは、グローバルとして関数を宣言します。

関連する問題