0

私はそれが実際にはリバースエンジニアリングではないことを知っています

私はこの機能を持っています:

<?=$this->get('translator')->trans('dashboard.actions', array(), 'front');?>

そのコードを使用するときに呼び出される関数を挿入する方法を理解したい (おそらく include を使用)。

関数名はtransである必要があり、引数が 3 つあることはわかっていますが、どのように定義すればよいでしょうか? これをもっと簡単に言いましょう: PHP スクリプトでは、使用時にHello worldをどのように出力しますか?$this->get('translator')->trans('dashboard.actions', array(), 'front');

4

3 に答える 3

0

$this現在のオブジェクト インスタンスを参照し、その変数を再割り当てすることはできません。つまり、PHP をだましてやりたいことをさせるには、言及した行の前後にコードを追加する必要があります。

単一のクラスを作成することで、結果を取得できます。

<?=...行の前に

<?php
    class C {
        function get($s) {
            return $this;
        }
        function trans($s, $a, $f) {
            return 'Hello world';
        }
        function hw() {
?>

次に、ライン

<?=$this->get('translator')->trans('dashboard.actions', array(), 'front');?>

次に、クラスを終了し、必要なことを行うメソッドを呼び出す必要があります

<?php
}}
    $i = new C();
    $i->hw();

コードの 3 つのブロックをファイルに入れ、そのファイルで PHP を呼び出すと、<?=...行に「Hello world」と表示されるはずです。

于 2013-06-10T16:25:38.403 に答える
0

これは通常のクラス メソッドです。

class Traslator{
    public function trans($a, $b, $c){
        return 'Hello world';
    }
}

get()これで、前のクラスのインスタンスを返す別のクラス メソッドが呼び出されるだけで済みます。

class Foo{
    public function get(){
        return new Traslator;
    }
}

完全なコード:

<?php

class Traslator{
    public function trans($a, $b, $c){
        return 'Hello world';
    }
}

class Foo{
    public function get(){
        return new Traslator;
    }


    public function test(){
        ?>
        <?=$this->get('translator')->trans('dashboard.actions', array(), 'front');?>
        <?php
    }
}

$f = new Foo;
$f->test();
于 2013-06-10T16:22:29.050 に答える