Skip to content

Instantly share code, notes, and snippets.

@rgantt
Created July 15, 2011 04:47
Show Gist options
  • Save rgantt/1084089 to your computer and use it in GitHub Desktop.
Save rgantt/1084089 to your computer and use it in GitHub Desktop.
Anonymous functions and closure in PHP
<?php
$count = 0;
function increase_count() {
global $count;
$count++;
}
increase_count();
echo $count;
var count = 2;
decrease_count = function() {
count--;
};
decrease_count();
document.write( count );
<?php
function create_closure( $count ) {
return function() use ( &$count ) {
return $count--;
};
}
$closure = create_closure( 10 );
$another_closure = create_closure( 20 );
echo $closure(); // 10
echo $another_closure(); // 20
echo $closure(); // 9
echo $closure(); // 8
echo $another_closure(); // 19
<?php
function create_closure( $count ) {
return function() use ( &$count ) {
return $count--;
};
}
$closure = create_closure( 10 );
echo $closure(); // 10
echo $closure(); // 9
echo $closure(); // 8
<?php
$count = 0;
function increase_count() {
global $count;
$count++;
}
increase_count();
$increase_count_again = function() {
global $count;
$count++;
};
$increase_count_again();
echo $count; // should be 2
<?php
$count = 0;
function increase_count() {
$count2 = 1;
function increase_count_again() {
global $count, $count2;
$count++;
$count2++;
}
increase_count_again();
return $count2;
}
echo increase_count();
echo $count;
<?php
$count = 1;
$decrease_count = function() use ( &$count ) {
$count--;
};
$decrease_count();
echo $count;
<?php
$count = 1;
$decrease_count = function() use ( $count ) {
$count--;
};
$decrease_count();
echo $count;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment