-
-
Save satlavida/984544 to your computer and use it in GitHub Desktop.
Flash Messages for PHP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class FlashMessages { | |
private $messages = array(); | |
private $now = false; | |
private function __construct() { | |
// Save all messages | |
$this->messages = $_SESSION['flash_messages']; | |
// Reset all flash messages or create the session | |
$_SESSION['flash_messages'] = array(); | |
} | |
// Only allows one instance of the class | |
public static function instance() { | |
static $instance = null; | |
if( $instance === null ) | |
$instance = new FlashMessages; | |
return $instance; | |
} | |
// Allows simple message adding | |
// usage: flash()->notice('You have logged in successfully'); | |
public function __call($name, $args) { | |
$message = $args[0]; | |
$this->message($name, $message); | |
} | |
public function message($name, $message) { | |
if( $this->now ) { | |
$this->messages[] = array( | |
'name' => $name, | |
'message' => $message | |
); | |
$this->now = false; | |
}else | |
$_SESSION['flash_messages'][] = array( | |
'name' => $name, | |
'message' => $message | |
); | |
} | |
public function each($callback = null) { | |
// Set default markup | |
if( $callback === null ) { | |
$callback = function($name, $message) { | |
echo '<div id="flash_' . $name . '">' . $message . '</div>'; | |
}; | |
} | |
foreach( $this->messages as $flash ) { | |
echo $callback($flash['name'], $flash['message']); | |
} | |
} | |
// Allows message to be displayed instantly | |
// (opposed to waiting for next page request) | |
public function now() { | |
$this->now = true; | |
return $this; | |
} | |
} | |
// Allows shorthand | |
function flash() { | |
return FlashMessages::instance(); | |
} | |
/* | |
EXAMPLES | |
*/ | |
// These will be saved for the next page | |
flash()->message('notice', 'You have logged in successfully'); | |
flash()->notice('You have logged in successfully'); // same as code above | |
// This will run on the next flash()->now() call | |
flash()->now()->alert('Something went wrong deleting the record'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment