>  기사  >  类库下载  >  [PHP 시리즈 강화] PHP의 익명 기능을 설명하는 장바구니 코드

[PHP 시리즈 강화] PHP의 익명 기능을 설명하는 장바구니 코드

高洛峰
高洛峰원래의
2016-10-09 12:46:441371검색

[PHP 시리즈 강화] 장바구니 코드 설명 PHP 익명 함수

1. 정의: 클로저라고도 불리는 익명 함수(익명 함수)는 불특정 이름 함수의 임시 생성을 허용합니다. 콜백 함수 인수로 가장 일반적으로 사용되는 값입니다. 물론 다른 응용 프로그램도 있습니다.

2. 사용법:

1) 변수의 값으로:

클로저 함수도 변수의 값으로 사용할 수 있습니다. PHP는 자동으로 이 표현식을 내장 클래스 Closure의 객체 인스턴스로 변환합니다. 클로저 객체를 변수에 할당하는 방법은 일반 변수 할당 구문과 동일하며 끝에 세미콜론을 추가해야 합니다

2) 상위 범위에서 변수 상속:

클로저 변수는 상위 범위에서 상속될 수 있습니다. 이러한 변수는 사용 언어 구성을 사용하여 전달되어야 합니다.

 3) 장바구니 코드로 표현된 전체 예:

<?php
// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。
// 其中有一个方法用来计算购物车中所有商品的总价格,该方法使
// 用了一个 closure 作为回调函数。
class Cart
{
    const PRICE_BUTTER  = 1.00;
    const PRICE_MILK    = 3.00;
    const PRICE_EGGS    = 6.95;

    protected   $products = array();
    
    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)
            {
                $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                    strtoupper($product));
                $total += ($pricePerItem * $quantity) * ($tax + 1.0);
            };
        
        array_walk($this->products, $callback);
        return round($total, 2);;
    }
}

$my_cart = new Cart;

// 往购物车里添加条目
$my_cart->add(&#39;butter&#39;, 1);
$my_cart->add(&#39;milk&#39;, 3);
$my_cart->add(&#39;eggs&#39;, 6);

// 打出出总价格,其中有 5% 的销售税.
print $my_cart->getTotal(0.05) . "\n";
// 最后结果是 54.29
?>

3. 참조:

 1) PHP 공식 설명 'Anonymous function': http://www.php.net/manual/zh/functions.anonymous.php

 2) Constant() 함수는 상수 값을 반환합니다: http://www.runoob com/. php/func-misc-constant.html

 3) array_walk() 함수는 배열의 각 요소에 사용자 정의 함수를 적용합니다: http://www.w3school.com.cn/php/func_array_walk. asp

 4) round() 함수는 부동 소수점 숫자를 반올림합니다: http://www.w3school.com.cn/php/func_math_round.asp


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 변수다음 기사:PHP 변수

관련 기사

더보기