ホームページ  >  記事  >  バックエンド開発  >  無許可代理人および見かけ上の代理人 Minor6 代理人

無許可代理人および見かけ上の代理人 Minor6 代理人

WBOY
WBOYオリジナル
2016-07-28 08:29:551075ブラウズ

6.1 プロキシ

マイナーは、Java の InvocationHandler インターフェイスと Proxy クラスに似たプロキシ モードの実装を提供します。詳細については、私の記事を参照してください: http://www.cnblogs.com/orlion/p/。 5350752.html

6.1.1

<span>class</span> FooController <span>extends</span><span> Controller
{
    </span><span>public</span><span>function</span> bar(<span>$productName</span><span>)
    {
       
        </span><span>$log</span> = <span>new</span><span> LogHandler();
        </span><span>$shop</span> = <span>new</span><span> Shop();
        </span><span>$shopProxy</span> = Proxy::newProxyInstance(<span>$shop</span>, <span>$log</span><span>);
        </span><span>$shopProxy</span>->buy(<span>$productName</span><span>);

    }
}</span>

<?<span>php

namespace App\Lib;

</span><span>use</span><span> Minor\Proxy\InvocationHandler;

</span><span>class</span> LogHandler <span>implements</span><span> InvocationHandler
{
    </span><span>public</span><span>function</span> invoke(<span>$target</span>, \ReflectionMethod <span>$method</span>, <span>Array</span><span>$args</span> =<span> [])
    {
        </span><span>$this</span>-><span>before();
        </span><span>$result</span> = <span>$method</span>->invokeArgs(<span>$target</span>, <span>$args</span><span>);
        </span><span>$this</span>-><span>after();

        </span><span>return</span><span>$result</span><span>;
    }

    </span><span>public</span><span>function</span><span> before()
    {
        </span><span>echo</span> '[LogHandler] before<br/><br/>'<span>;
    }

    </span><span>public</span><span>function</span><span> after()
    {
        </span><span>echo</span> '[LogHandler] after<br/><br/>'<span>;
    }
}</span>

<?<span>php

namespace App\Lib;

</span><span>class</span><span> Shop
{

    </span><span>private</span><span>$mail</span> = <span>null</span><span>;

    </span><span>public</span><span>function</span> boot(MailProvider <span>$mail</span><span>)
    {
        </span><span>$this</span>-><span>mail</span> = <span>$mail</span><span>;
    }

    </span><span>public</span><span>function</span> buy(<span>$productName</span><span>)
    {
        </span><span>echo</span> '[Shop] buy ' . <span>$productName</span> . '<br/><br/>'<span>;
        </span>!<span>is_null</span>(<span>$this</span>-><span>mail</span>) && <span>$this</span>-><span>mail</span>->send('DemoUser'<span>);
    }
}</span>
の使用

以上、不正プロキシと見かけプロキシの内容を含めて、Minor6 プロキシを紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。