• Save
The Truth About Lambdas in PHP
Upcoming SlideShare
Loading in...5
×
 

The Truth About Lambdas in PHP

on

  • 1,812 views

This is a static version of the dynamic, multi-media presentation I'm doing at CSUF on Saturday Jan 29, 2011. In other words, what's up at slideshare is the result of a cut and paste job of web ...

This is a static version of the dynamic, multi-media presentation I'm doing at CSUF on Saturday Jan 29, 2011. In other words, what's up at slideshare is the result of a cut and paste job of web browser screen shots. Some of the code that is line numbered unfortunately appears out of kilter as a consequence of HTML and my word-processor being out of sinc with one another. Also, you may need to view the document in full screen mode and use the zoom-in button.

Statistics

Views

Total Views
1,812
Views on SlideShare
1,771
Embed Views
41

Actions

Likes
4
Downloads
0
Comments
0

5 Embeds 41

http://slevy1.wordpress.com 32
http://www.slideshare.net 4
http://www.linkedin.com 3
http://static.slidesharecdn.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

The Truth About Lambdas in PHP The Truth About Lambdas in PHP Document Transcript

  • flickr.com/photos: katkun/4349837202/By katkun
  • LOG.PHP: 1. define("DEPOSIT",100); 2. /** 3. * getParams() 4. * returns annual interest and how many hundreds 5. **/ 6. function getParams() { 7. $annual_interest = 0.05; 8. $hundreds = 2; 9. if ( isset( $_GET[ai] ) ) { 10.$annual_interest = (float) $_GET[ai]; 11.} 12.if (isset( $_GET[hu] ) ) { 13.$hundreds = (int) $_GET[hu]; 14.} 15.return array($annual_interest,$hundreds); 16.} 17.list ($annual_interest, $hundreds) = getParams(); 18.$percent_format = substr($annual_interest,-1,1) . %; 19.$rate = 1 + $annual_interest; 20./** REMOVED: 21.* $f = create_function($x, $y, return round( log( $x ) / log( $y ),2 ); ); 22.* 23.**/ 24.$f = function( $x, $y ) { 25.return round( log( $x ) / log( $y ), 2 ); 26.}; 27.$x = $f( $hundreds, $rate );
  • THIS_AND_THAT.PHP: 1. <?php 2. class Example2 { 3. private $secret_code = " <--{ -*- }--> "; 4. function Square( $num ) { 5. return $num * $num; 6. } 7. function getSecretSign() 8. { 9. return $this->secret_code; 10.} 11.function doIt( $x ) { 12.$that = $this; 13.return function ($y) use ($x, $that) { 14.$special = $that->getSecretSign(); 15.return $special . ($that->Square( $x ) + $y) . $special; 16.}; 17.} 18.} 19.$e2 = new Example2(); 20.$r = $e2->doIt( 10 ); 21.$rr = $r( 80 ); 22.include("this_and_that.template.php"); View slide
  • DIFFERENT_SCOPES.PHP: 1. <?php 2. include("lvd.header.php"); 3. ?> 4. <script> 5. var fact = function(n) { 6. if( n <= 1 ){ 7. return 1; 8. } 9. else 10.{ 11.return n * fact( n-1 ); 12.} 13.}; 14.alert( fact( 4 ) ); 15.</script> 16.<?php 17.$fact = function( $n ){ 18.if( $n <= 1 ) { 19.return 1; 20.} else { 21.return $n * $fact( $n-1 ); 22.} 23.}; 24.$r = $fact( 4 ); // Output : Error 25.include("lvd.footer.php"); View slide
  • DIFFERENT_SCOPES_GOOD.PHP: 1. <?php include("lvd.header.php"); ?> 2. <script> 3. var fact = function( n ) { 4. if( n <= 1 ){ 5. return 1; 6. } else { 7. return n * fact( n-1 ); 8. } 9. }; 10.alert(fact(4)) 11.</script> 12.<?php 13.$fact = function( $n ) use( &$fact ) { 14.if($n <= 1) { 15.return 1; 16.} 17.else 18.{ 19.return $n * $fact( $n-1 ); 20.} 21.}; 22.$r = $fact( 4 ); 23.include("lvd.footer.php");
  • 1. <?php2. // practical use of closures: dynamic method creation3. // more info at http://www.ibm.com/developerworks/opensource/library/os-php- lambda/index.html?ca=drs-4. class Car { 5. public $model; 6. public function __construct( $type ) 7. { 8. $this->model = $type; 9. } 10.public function __call( $method, $args ) { 11.return call_user_func_array( $this->$method, $args ); 12.}13.}14.$car = new Car("Ferrari");15.$car->Drive = function( $speed ) use ( $car ) { 16.return Varoom! . $car->model . is driving . $speed . mph and loving it.;17.};18.$r = array();19.$r[0] = $car->Drive("90");20.$go_for_it = $car->Drive;21.unset($car);22.$r[1] = $go_for_it("120");23.include("ferrari.template.php");
  • INVOKE_EXAMPLE.PHP: 1. <?php 2. class Determinator { 3. public $x; 4. public function __construct( $x ) { 5. $this->x = (int) $x; 6. } 7. public function __invoke() { 8. $res = ($this->x % 2 == 1)? odd: even; 9. return " // $d->x is $res <span style=font: 70% Arial,Helvetica> ( " . $this->x . " )</span>"; 10.} 11.} 12.$num = pow(3,4) - 5; 13.$d = new Determinator( $num ); 14.$r[] = $d(); 15.$d->x = pow(4,3) - 7; 16.$r[] = $d->__invoke() . <br>; 17.include("invoke_example.template.php");