I used the following approach:
$foo_called = false; function foo() { if($foo_called) { return; } $foo_called = true; // do something. }
I was wondering if there are better / different approaches.
Just for clarity, I would do something like this:
function foo() { static $foo_called = false; if (!$foo_called) { $foo_called = true; // etc. } }
You can use a static variable :
function foo() { static $foo_called = false; if ($foo_called) return; $foo_called = true; // do something. }
singleton pattern?
" Singleton , . . .
. . , global, .
global
, .
, - - , . , , - , - , , , .
function initSomething() { if (isSomethingInit()) return; // Init Something }
-, . , .
function somethingWithCallback($callback) { $callback(5); } somethingWithCallback(function ($e) {echo $e;});
, , .
$triggered = false; $trigger = function($callback)use(&$triggered){ if(!$triggered){ $callback(); $triggered = true; } }; foreach(['Hello','World', 'Wuhuu!'] as $value) { $value = ' ' . $value; $trigger(function()use(&$value){ // will only run once $value = trim($value); }); echo $value; }