Solved

I do not understand calling sale function of new product

Posted on 2014-03-25
6
304 Views
Last Modified: 2014-03-30
<?php
require_once( "closures.php" );

$logger = create_function( '$product', 
                           'print "    logging ({$product->name})\n";' );

$processor = new ProcessSale();
$processor->registerCallback( $logger );

$processor->sale( new Product( "shoes", 6 ) );
print "\n";
$processor->sale( new Product( "coffee", 6 ) );
?>

Open in new window


closures.php
<?php

class Product {
    public $name;
    public $price;
    function __construct( $name, $price ) {
        $this->name = $name;
        $this->price = $price;
    }
}

class ProcessSale {
    private $callbacks;

    function registerCallback( $callback ) {
        if ( ! is_callable( $callback ) ) {
            throw new Exception( "callback not callable" );
        }
        $this->callbacks[] = $callback;
    }

    function sale( $product ) {
        print "{$product->name}: processing \n";
        foreach ( $this->callbacks as $callback ) {
            call_user_func( $callback, $product );
        }
    }
}
?>

Open in new window



I do not understand calling sale function of new product

$processor->sale( new Product( "shoes", 6 ) );
0
Comment
Question by:rgb192
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
6 Comments
 
LVL 35

Expert Comment

by:gr8gonzo
ID: 39955054
What specifically do you not understand about it?

To be clear, the sale function does not belong to the new product. The sale function belongs to the $processor object, and the code is creating a new product object and passing that new product as a parameter to the $processor's sale function.
0
 

Author Comment

by:rgb192
ID: 39956570
Calling 2 methods at the same time
0
 

Author Comment

by:rgb192
ID: 39962398
I do not understand calling two classes at the same time.

Sale method of new product
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 35

Accepted Solution

by:
gr8gonzo earned 500 total points
ID: 39963127
This code:
$processor->sale( new Product( "shoes", 6 ) );

...could be rewritten as two lines:

$temporary_variable = new Product( "shoes", 6 );
$processor->sale( $temporary_variable );

The only difference is that the "new Product" part is created in memory and is passed immediately to the sale function and there is no $temporary_variable or other variable to reference it outside of the function.
0
 

Author Comment

by:rgb192
ID: 39964987
okay same output but easier to understand

//$processor->sale( new Product( "shoes", 6 ) );
$temporary_variable=new Product("shoes", 6);
$processor->sale($temporary_variable);



Next part of sale function I do not understand is the foreach
this run was value lambda_8, last run was lambda_8
Only one run in the foreach


what is lambda and why always run once
0
 

Author Closing Comment

by:rgb192
ID: 39965428
Yes you answered the question about calling the method.
Thank you.

Second question about this method is:
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_28400934.html
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
This article discusses four methods for overlaying images in a container on a web page
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question