php閉包使用例子

來源:互聯網
上載者:User

標籤:public   on()   sha   dump   factory   使用   username   blog   als   

一.依據閉包實現一個容器
class Di{    private $factory;    public function set($id, $value)    {        $this->factory[$id] = $value;    }    public function get($id)    {        $val = $this->factory[$id];        return $val();//如果不加括弧,僅僅返回的是閉包類,並不是User執行個體    }}class User{    private $username;    public function __construct($username = ‘‘)    {        $this->username = $username;    }    public function getUserName()    {        return $this->username;    }}$di = new Di();// 在此使用了閉包,所以實際上並不會執行個體化User類,只有在後面get的時候才會執行個體化$di->set(‘a‘, function(){    return new User(‘張三‘);});var_dump($di->get(‘a‘)->getUserName());

  

二.使用閉包作為回調
class Cart{    CONST PRICE_BUTTER = 1.0;    CONST PRICE_MILK = 5.05;    protected $products = [];    public function add($product, $quantity)    {        $this->products[$product] = $quantity;    }    public function getQuantity($product)    {        return isset($this->products[$product]) ? $this->products[$product]: false;    }    public function getTotal($tax)    {        $total = 0.00;        $callback = function($quantity, $product) use ($tax, &$total) {            $priceItem = constant(__CLASS__ . ‘::PRICE_‘ . strtoupper($product));            $total += ($priceItem * $quantity) * ($tax + 1.0);        };        array_walk($this->products, $callback);        return round($total, 2);    }}$cart = new Cart();$cart->add(‘butter‘, 1);$cart->add(‘milk‘, 5);echo $cart->getTotal(0.05);

  

 

php閉包使用例子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.