PHP Classes

Persistent PHP Superglobals Array Maker: Create array variables that act like superglobals

Recommend this page to a friend!
     
  Info   Example   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 136 All time: 9,275 This week: 206Up
Version License PHP version Categories
globals-maker 1.0The PHP License5PHP 5, Data types
Description 

Author

This package can create array variables that act like superglobals.

It can initialize arrays of variables that are accessible from different functions.

The package can also merge an array with an existing superglobal variable.

Innovation Award
PHP Programming Innovation award nominee
June 2018
Number 6
Superglobals are variables that can be accessed from any function in PHP code, being those global functions or functions of class.

PHP provides several built-in superglobal variables for different purposes.

This package can implement custom superglobals that any application can create and use just like the built-in superglobal variables.

Manuel Lemos
Picture of zinsou A.A.E.Moïse
  Performance   Level  
Name: zinsou A.A.E.Moïse <contact>
Classes: 50 packages by
Country: Benin Benin
Innovation award
Innovation award
Nominee: 23x

Winner: 2x

Example

<?php
require('PersistentGlobalsMaker.php');


// pgm_exists('papiLikeSession')?pgm_start('papiLikeSession'):pgm_create('papiLikeSession');
pgm_check_and_start('papiLikeSession');
echo
'<pre>';
var_dump($papi);

$riskedpapi[][]=0;
$riskedpapi[][]='another';
$riskedpapi[]='this is a session like global';
$riskedpapi[]='testabort';
$papi->mergewithexisting($riskedpapi);

// $papi->abort();
// PersistentGlobalsMaker::destroy('papi');

pgm_check_and_start('Session');
var_dump($Session);
$Session['[4][5]']='papi puncho';
$Session['%[4][5][]%']='papi puncho';



var_dump(PersistentGlobalsMaker::destroyOld(null,30));
echo
'<pre>';
?>


Details

PHP Persistent Globals Maker. As its name indicates, its purpose is to allow any one to build super globals of their chosen names and then be able to access them any where.This package allows to build session type globals which allows one file per user but also globals which are only relatives to the site itself which use only one file. Except the basic access type like $object[]=2; and $object[1]=0 or unset($object[1]) you can use: $tada['["papa"][0][6]']='tada'; //=> mean $tada["papa"][0][6]='tada'; unset($tada['["papa"][0][6]']); //=>mean unset($tada["papa"][0][6]); if you wish to use in you offset element like [,# or % you must use the delimiter %[ and ]% so anything between these tags will be treat as simple string. Many could find the shortcut above tricky and complex so they can use any array,define the input and then use the MergeWithExisting method to fill the global.See the example file for more details. To create and/or use a super global the method suggested is : PersistentGlobalsMaker::globalExists($global)?PersistentGlobalsMaker::useExisting($global):PersistentGlobalsMaker::create($global); or with the shortcut pgm_check_and_start($global); at the top of all your script where you want to use it. i.e: pgm_check_and_start('mysuperglobal'); will make available the super global $mysuperglobal every where you put the snippet above. Note that this will automatically erase any global named the same as your super global so be sure to avoid conflict by choosing more or less unique name. Note that your name must respect the PHP requirements for variables names. To create super global which act exactly like PHP sessions super global you must add the string likesession at the end of your chosen name i.e: pgm_check_and_start('mysuperglobalLikesession');// the likesession part is insensitive will make available the super global $mysuperglobal every where you put the snippet above. this super global will act exactly as $_SESSION as it use one file per user and use the same id as the PHP session id. keep in mind that you can create as much super globals as wished provided that the names are different. Also keep in mind that the package is optimized and made in order to never enter in conflict with native PHP globals.So never choose a name in this list or your global will never be created: $forbiddenGlobals=[ '_SESSION','GLOBALS','_GET','_POST', '_REQUEST','_FILES','_ENV','_SERVER', '_COOKIES','php_errormsg','HTTP_RAW_POST_DATA', 'http_response_header','argc','argv', ]; Also keep in mind that you don't need to manually save the state with the method saveState except if you want. a last but not least thing to keep in mind is how to make your super global available in functions,and classes; function nowToglobal(){ global $mysuperglobal;//then you can use it as you want $mysuperglobal['now']=date('y-m-d',time()); } or function nowToglobal(){ $GLOBALS['mysuperglobal']['now']=date('y-m-d',time()); } The state will be saved and you will be able to use it on another page on in the same page with : i.e: echo $mysuperglobal['now']; the existing methods and functions are: array ( 'ContentSerialize' => 'return a serialized version of the global's contents not the global itself', 'Create' => 'create the a new global and save it in the memory for further manipulation', 'Destroy' => 'Delete globally the global and remove it completely from the memory', 'MergeWithExisting' =>'Merge a given array with the global content', 'SetInnerVal' => 'set an inner value', 'UnsetInnerVal' => 'unset an inner value', '__clone' => 'throw an exception for a global can't be cloned', '__construct' => 'the purpose of construct but is useless here', '__debugInfo' => 'the purpose of __debugInfo', '__destruct' => 'save the current state if needed before the global local destruction', '__set_state' => 'Import a global in the current scope from a previously exported global ', '__sleep' => 'save the state of the current global before serialization', '__toString' => 'return a Json object of the global content', '__wakeup' => 'restore the global after unserialization', 'abort' => 'abort any change brought to the current global', 'clear' => 'clear the content of the global and also the log file', 'clearLog' => 'Keep the global's content but clear the log file', 'count' => 'the purpose of countable::count', 'current' => 'the purpose of Iterator::current', 'destroyOld' =>'start garbage collector to delete all old globals sessions', 'detectleveltype' => 'private method to detect the variable type of a value in the global', 'getsquarebracket' => 'retrieve all occurrences of bracketed values in a string', 'globalExists' => 'check if a global already exists in memory', 'jsonSerialize' => 'the purpose of JsonSerialiazable::JsonSerialize', 'key' => 'the purpose of Iterator::key', 'next' => 'the purpose of Iterator::next', 'offsetExists' => 'the purpose of ArrayAccess::offsetExists', 'offsetGet' => 'the purpose of ArrayAccess::offsetGet', 'offsetSet' => 'the purpose of ArrayAccess::offsetSet', 'offsetUnset' => 'the purpose of ArrayAccess::offsetUnset', 'prev' => 'the purpose of prev', 'rewind' => 'the purpose of Iterator::rewind', 'saveState' => 'save the current state of the global', 'synchronous_regenerate_session_id' => 'regenerate the session id but keep the global content under the new session id', 'useExisting' => 'make the global content available if exists', 'valid' =>'the purpose of Iterator::valid', ) shortcut functions array ( 'pgm_check_and_start' => "check if the requested global exists any where in memory and make its contents available or create it if not exists ", 'pgm_create' => 'create the global and store it in memory for further manipulation', 'pgm_exists' => 'check if any global exists under the given name', 'pgm_gc' => 'start the garbage collector', 'pgm_regenerate_id' => 'regenerate the session id but keep the global content under the new session id', 'pgm_start' => 'make the global content available', ); for contributions ,feedback and other use the forum. There is an example file in the package but if you really want to see the package in action download the lastest version of my package lazy global classes and functions loader .

  Files folder image Files (3)  
File Role Description
Plain text file PersistentGlobalsMaker.php Class class source
Accessible without login Plain text file readme.txt Doc. readme
Accessible without login Plain text file test.php Example example script

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Reuses Unique User Downloads Download Rankings  
 0%1
Total:136
This week:0
All time:9,275
This week:206Up