eZ Publish  [trunk]
eZPHPCreator Class Reference

eZPHPCreator provides a simple interface for creating and executing PHP code. More...

List of all members.

Public Member Functions

 eZPHPCreator ($dir, $file, $prefix= '', $options=array())
 thisVariableText ($value, $column=0, $iteration=0, $maxIterations=2)
 addDefine ($name, $value, $caseSensitive=true, $parameters=array())
 addRawVariable ($name, $value)
 addVariable ($name, $value, $assignmentType=eZPHPCreator::VARIABLE_ASSIGNMENT, $parameters=array())
 addVariableUnset ($name, $parameters=array())
 addVariableUnsetList ($list, $parameters=array())
 addSpace ($lines=1)
 addText ($text)
 addMethodCall ($objectName, $methodName, $methodParameters, $returnValue=false, $parameters=array())
 addCodePiece ($code, $parameters=array())
 addComment ($comment, $eol=true, $whitespaceHandling=true, $parameters=array())
 addInclude ($file, $type=eZPHPCreator::INCLUDE_ONCE_STATEMENT, $parameters=array())

Static Public Member Functions

static prependSpacing ($text, $spacing, $skipEmptyLines=true, $spacingString=" ", $splitString="\n")
static variableNameText ($variableName, $assignmentType, $variableParameters=array())
static variableText ($value, $column=0, $iteration=0, $maxIterations=false)

Public Attributes

 $ClusterFileScope = false
 $ClusteringEnabled = false
 $Elements
 $FileResource
 $isAtomic
 $PHPDir
 $PHPFile
 $requestedFilename
 $Spacing = true
 $TextChunks
 $tmpFilename
const CODE_PIECE = 5
const DEFINE = 9
const EOL_COMMENT = 6
const INCLUDE_ALWAYS_STATEMENT = 2
const INCLUDE_ONCE_STATEMENT = 1
const INCLUDE_STATEMENT = 7
const METHOD_CALL = 4
const METHOD_CALL_PARAMETER_VALUE = 1
const METHOD_CALL_PARAMETER_VARIABLE = 2
const RAW_VARIABLE = 11
const SPACE = 2
const TEXT = 3
const VARIABLE = 1
const VARIABLE_APPEND_ELEMENT = 3
const VARIABLE_APPEND_TEXT = 2
const VARIABLE_ASSIGNMENT = 1
const VARIABLE_UNSET = 8
const VARIABLE_UNSET_LIST = 10

Private Member Functions

 flushChunks ()
 temporaryVariableName ($prefix)
 write ($text)
 writeChunks ()
 writeCodePiece ($element)
 writeComment ($element)
 writeDefine ($element)
 writeElements ()
 writeInclude ($element)
 writeMethodCall ($element)
 writeRawVariable ($variableName, $variableValue)
 writeSpace ($element)
 writeText ($element)
 writeVariable ($variableName, $variableValue, $assignmentType=eZPHPCreator::VARIABLE_ASSIGNMENT, $variableParameters=array())
 writeVariableUnset ($element)
 writeVariableUnsetList ($element)
 open ($atomic=false)
 close ()
 exists ()
 canRestore ($timestamp=false)
 restore ($variableDefinitions)
 store ($atomic=false)
 fetch ($addPHPMarkers=true)
 _restoreCall ($path, $mtime, $variableDefinitions)

Detailed Description

eZPHPCreator provides a simple interface for creating and executing PHP code.

To create PHP code you must create an instance of this class, add any number of elements you choose with addDefine(), addVariable(), addVariableUnset(), addVariableUnsetList(), addSpace(), addText(), addMethodCall(), addCodePiece(), addComment() and addInclude(). After that you call store() to write all changes to disk.

$php = new eZPHPCreator( 'cache', 'code.php' );

$php->addComment( 'Auto generated' );
$php->addInclude( 'inc.php' );
$php->addVariable( 'count', 10 );

$php->store();

To restore PHP code you must create an instance of this class, check if you can restore it with canRestore() then restore variables with restore(). The class will include PHP file and run all code, once the file is done it will catch any variables you require and return it to you.

$php = new eZPHPCreator( 'cache', 'code.php' );

if ( $php->canRestore() )
{
    $variables = $php->restore( array( 'max_count' => 'count' ) );
    print( "Max count was " . $variables['max_count'] );
}

$php->close();

Definition at line 52 of file ezphpcreator.php.


Member Function Documentation

eZPHPCreator::_restoreCall ( path,
mtime,
variableDefinitions 
) [private]

Processes the PHP file and returns the specified data.

Definition at line 903 of file ezphpcreator.php.

Referenced by restore().

eZPHPCreator::addCodePiece ( code,
parameters = array() 
)

Adds custom PHP code to the file, you should only use this a last resort if any of the other add functions done give you the required result.

Parameters:
$codeContains the code as text, the text will not be modified (except for spacing). This means that each expression must be ended with a newline even if it's just one.
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.

Example:

$php->addCodePiece( "if ( \$value > 2 )\n{\n    \$value = 2;\n}\n" );

Would result in the PHP code.

if ( $value > 2 )
{
    $value = 2;
}

Definition at line 355 of file ezphpcreator.php.

eZPHPCreator::addComment ( comment,
eol = true,
whitespaceHandling = true,
parameters = array() 
)

Adds a comment to the code, the comment will be display using multiple end-of-line comments (//), one for each newline in the text $comment.

Parameters:
$eolWhether to add a newline at the last comment line
$whitespaceHandlingWhether to remove trailing whitespace from each line
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.

Example:

$php->addComment( "This file is auto generated\nDo not edit!" );

Would result in the PHP code.

// This file is auto generated
// Do not edit!

Definition at line 385 of file ezphpcreator.php.

eZPHPCreator::addDefine ( name,
value,
caseSensitive = true,
parameters = array() 
)

Adds a new define statement to the code with the name $name and value $value. The parameter $caseSensitive determines if the define should be made case sensitive or not.

Example:

$php->addDefine( 'MY_CONSTANT', 5 );

Would result in the PHP code.

define( 'MY_CONSTANT', 5 );
Parameters:
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.
Note:
$name must start with a letter or underscore, followed by any number of letters, numbers, or underscores. See http://php.net/manual/en/language.constants.php for more information.
See also:
http://php.net/manual/en/function.define.php

Definition at line 133 of file ezphpcreator.php.

eZPHPCreator::addInclude ( file,
type = eZPHPCreator::INCLUDE_ONCE_STATEMENT,
parameters = array() 
)

Adds an include statement to the code, the file to include is $file.

Parameters:
$typeWhat type of include statement to use, can be one of the following:
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.

Example:

$php->addInclude( 'lib/ezutils/classes/ezphpcreator.php' );

Would result in the PHP code.

//include_once( 'lib/ezutils/classes/ezphpcreator.php' );

Definition at line 416 of file ezphpcreator.php.

eZPHPCreator::addMethodCall ( objectName,
methodName,
methodParameters,
returnValue = false,
parameters = array() 
)

Adds code to call the method $methodName on the object named $objectName, $methodParameters should be an array with parameter entries where each entry contains:

Optionally the $returnValue parameter can be used to decide what should be done with the return value of the method call. It can either be false which means to do nothing or an array with the following entries.

  • 0, The name of the variable to assign the value to
  • 1 (optional), The type of assignment, uses the same value as addVariable().
Parameters:
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.

Example:

$php->addMethodCall( 'node', 'name', array(), array( 'name' ) );
$php->addMethodCall( 'php', 'addMethodCall',
                     array( array( 'node' ), array( 'name' ) ) );

Would result in the PHP code.

$name = $node->name();
$php->addMethodCall( 'node', 'name' );

Definition at line 320 of file ezphpcreator.php.

eZPHPCreator::addRawVariable ( name,
value 
)

Adds a new raw variable tothe code with the name $name and value $value.

Example:

$php->addVariable( 'TransLationRoot', $cache['root'] );

This function makes use of PHP's var_export() function which is optimized for this task.

Definition at line 154 of file ezphpcreator.php.

eZPHPCreator::addSpace ( lines = 1)

Adds some space to the code in form of newlines. The number of lines is controlled with $lines which is 1 by default. You can use this to get more readable PHP code.

Example:

$php->addSpace( 1 );

Definition at line 265 of file ezphpcreator.php.

eZPHPCreator::addText ( text)

Adds some plain text to the code. The text will be placed outside of PHP start and end markers and will in principle work as printing the text.

Example:

$php->addText( 'Print me!' );

Definition at line 282 of file ezphpcreator.php.

eZPHPCreator::addVariable ( name,
value,
assignmentType = eZPHPCreator::VARIABLE_ASSIGNMENT,
parameters = array() 
)

Adds a new variable to the code with the name $name and value $value.

Example:

$php->addVariable( 'offset', 5  );
$php->addVariable( 'text', 'some more text', eZPHPCreator::VARIABLE_APPEND_TEXT );
$php->addVariable( 'array', 42, eZPHPCreator::VARIABLE_APPEND_ELEMENT );

Would result in the PHP code.

$offset = 5;
$text .= 'some more text';
$array[] = 42;
Parameters:
$assignmentTypeControls the way the value is assigned, choose one of the following:
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.
  • full-tree, Whether to displays array values as one large expression (true) or split it up into multiple variables (false)

Definition at line 188 of file ezphpcreator.php.

eZPHPCreator::addVariableUnset ( name,
parameters = array() 
)

Adds code to unset a variable with the name $name.

Example:

$php->addVariableUnset( 'offset' );

Would result in the PHP code.

unset( $offset );
Parameters:
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.
See also:
http://php.net/manual/en/function.unset.php

Definition at line 218 of file ezphpcreator.php.

eZPHPCreator::addVariableUnsetList ( list,
parameters = array() 
)

Adds code to unset a list of variables with name from $list.

Example:

$php->addVariableUnsetList( array ( 'var1', 'var2' ) );

Would result in the PHP code.

unset( $var1, $var2 );
Parameters:
$parametersOptional parameters, can be any of the following:
  • spacing, The number of spaces to place before each code line, default is 0.
See also:
http://php.net/manual/en/function.unset.php

Definition at line 246 of file ezphpcreator.php.

eZPHPCreator::canRestore ( timestamp = false)
Returns:
true if file exists and can be restored.
Parameters:
$timestampThe timestamp to check the modification time of the file against, if the modification time is larger or equal to $timestamp the file can be restored. Otherwise the file is considered too old.
Note:
The file name and path is supplied to the constructor of this class.

Definition at line 836 of file ezphpcreator.php.

Closes the currently open file if any.

Definition at line 792 of file ezphpcreator.php.

Referenced by store().

Returns:
true if the file and path already exists.
Note:
The file name and path is supplied to the constructor of this class.

Definition at line 816 of file ezphpcreator.php.

eZPHPCreator::eZPHPCreator ( dir,
file,
prefix = '',
options = array() 
)

Initializes the creator with the directory path $dir and filename $file.

Definition at line 79 of file ezphpcreator.php.

eZPHPCreator::fetch ( addPHPMarkers = true)

Creates a text string out of all elements and returns it.

Note:
Calling this multiple times will resulting text processing each time.

Definition at line 973 of file ezphpcreator.php.

Definition at line 1024 of file ezphpcreator.php.

Referenced by fetch(), and store().

eZPHPCreator::open ( atomic = false)

Opens the file for writing and sets correct file permissions.

Returns:
The current file resource or false if it failed to open the file.
Note:
The file name and path is supplied to the constructor of this class.
Multiple calls to this method will only open the file once.

Definition at line 754 of file ezphpcreator.php.

Referenced by store().

static eZPHPCreator::prependSpacing ( text,
spacing,
skipEmptyLines = true,
spacingString = " ",
splitString = "\n" 
) [static]

Splits $text into multiple lines using $splitString for splitting. For each line it will prepend the string $spacingString n times as specified by $spacing.

It will try to be smart and not do anything when $spacing is set to 0.

Parameters:
$skipEmptyLinesIf true it will not prepend the string for empty lines.
$spacingMust be a positive number, 0 means to not prepend anything.

Definition at line 729 of file ezphpcreator.php.

Referenced by writeCodePiece(), writeMethodCall(), writeVariable(), writeVariableUnset(), and writeVariableUnsetList().

eZPHPCreator::restore ( variableDefinitions)

Tries to restore the PHP file and fetch the defined variables in $variableDefinitions. This basically means including the file using include().

Parameters:
$variableDefinitionsAssociative array with the return variable name being the key matched variable as value.
Returns:
An associatve array with the variables that were found according to $variableDefinitions.

Example:

$values = $php->restore( array( 'MyValue' => 'node' ) );
print( $values['MyValue'] );
Note:
The file name and path is supplied to the constructor of this class.

Definition at line 879 of file ezphpcreator.php.

eZPHPCreator::store ( atomic = false)

Stores the PHP cache, returns false if the cache file could not be created.

Definition at line 938 of file ezphpcreator.php.

eZPHPCreator::temporaryVariableName ( prefix) [private]

Definition at line 1320 of file ezphpcreator.php.

Referenced by thisVariableText().

eZPHPCreator::thisVariableText ( value,
column = 0,
iteration = 0,
maxIterations = 2 
)

Creates a text representation of the value $value which can be placed in files and be read back by a PHP parser as it was. The type of the values determines the output, it can be one of the following.

  • boolean, becomes true or false
  • null, becomes null
  • string, adds \ (backslash) to backslashes, double quotes, dollar signs and newlines. Then wraps the whole string in " (double quotes).
  • numeric, displays the value as-is.
  • array, expands all value recursively using this function
  • object, creates a representation of an object creation if the object has serializeData implemented.
Parameters:
$columnDetermines the starting column in which the text will be placed. This is used for expanding arrays and objects which can span multiple lines.
$iterationThe current iteration, starts at 0 and increases with 1 for each recursive call
$maxIterationsThe maximum number of iterations to allow, if the iteration exceeds this the array or object will be split into multiple variables. Can be set to false to the array or object as-is.
Note:
This function can be called statically if $maxIterations is set to false

Definition at line 476 of file ezphpcreator.php.

Referenced by writeDefine(), writeInclude(), writeMethodCall(), and writeVariable().

static eZPHPCreator::variableNameText ( variableName,
assignmentType,
variableParameters = array() 
) [static]

Creates a variable statement with an assignment type and returns it.

Parameters:
$variableNameThe name of the variable
$assignmentTypeWhat kind of assignment to use, is one of the following;
$variableParametersOptional parameters for the statement

Definition at line 437 of file ezphpcreator.php.

Referenced by writeMethodCall(), and writeVariable().

Definition at line 993 of file ezphpcreator.php.

Referenced by store().

eZPHPCreator::writeCodePiece ( element) [private]

Definition at line 1183 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeComment ( element) [private]

Definition at line 1144 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeDefine ( element) [private]

Definition at line 1094 of file ezphpcreator.php.

Referenced by writeElements().

Definition at line 1040 of file ezphpcreator.php.

Referenced by fetch(), and store().

eZPHPCreator::writeInclude ( element) [private]

Definition at line 1120 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeMethodCall ( element) [private]

Definition at line 1208 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeRawVariable ( variableName,
variableValue 
) [private]

Definition at line 1291 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeSpace ( element) [private]

Definition at line 1174 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeText ( element) [private]

Definition at line 1197 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeVariable ( variableName,
variableValue,
assignmentType = eZPHPCreator::VARIABLE_ASSIGNMENT,
variableParameters = array() 
) [private]

Definition at line 1299 of file ezphpcreator.php.

Referenced by thisVariableText(), and writeElements().

eZPHPCreator::writeVariableUnset ( element) [private]

Definition at line 1254 of file ezphpcreator.php.

Referenced by writeElements().

eZPHPCreator::writeVariableUnsetList ( element) [private]

Definition at line 1269 of file ezphpcreator.php.

Referenced by writeElements().


Member Data Documentation

eZPHPCreator::$ClusterFileScope = false

Definition at line 1338 of file ezphpcreator.php.

eZPHPCreator::$ClusteringEnabled = false

Definition at line 1337 of file ezphpcreator.php.

eZPHPCreator::$Elements

Definition at line 1331 of file ezphpcreator.php.

eZPHPCreator::$FileResource

Definition at line 1330 of file ezphpcreator.php.

eZPHPCreator::$isAtomic

Definition at line 1333 of file ezphpcreator.php.

eZPHPCreator::$PHPDir

Definition at line 1328 of file ezphpcreator.php.

eZPHPCreator::$PHPFile

Definition at line 1329 of file ezphpcreator.php.

eZPHPCreator::$requestedFilename

Definition at line 1335 of file ezphpcreator.php.

eZPHPCreator::$Spacing = true

Definition at line 1336 of file ezphpcreator.php.

eZPHPCreator::$TextChunks

Definition at line 1332 of file ezphpcreator.php.

eZPHPCreator::$tmpFilename

Definition at line 1334 of file ezphpcreator.php.

Definition at line 58 of file ezphpcreator.php.

Referenced by addCodePiece(), and writeElements().

Definition at line 62 of file ezphpcreator.php.

Referenced by addDefine(), and writeElements().

Definition at line 59 of file ezphpcreator.php.

Referenced by addComment(), and writeElements().

Definition at line 71 of file ezphpcreator.php.

Referenced by writeInclude().

Definition at line 60 of file ezphpcreator.php.

Referenced by addInclude(), and writeElements().

Definition at line 57 of file ezphpcreator.php.

Referenced by addMethodCall(), and writeElements().

Definition at line 73 of file ezphpcreator.php.

Referenced by writeMethodCall().

Definition at line 74 of file ezphpcreator.php.

Referenced by writeMethodCall().

Definition at line 64 of file ezphpcreator.php.

Referenced by addRawVariable(), and writeElements().

Definition at line 55 of file ezphpcreator.php.

Referenced by addSpace(), and writeElements().

const eZPHPCreator::TEXT = 3

Definition at line 56 of file ezphpcreator.php.

Referenced by addText(), and writeElements().

Definition at line 54 of file ezphpcreator.php.

Referenced by addVariable(), and writeElements().

Definition at line 68 of file ezphpcreator.php.

Referenced by variableNameText().

Definition at line 67 of file ezphpcreator.php.

Referenced by variableNameText().

Definition at line 61 of file ezphpcreator.php.

Referenced by addVariableUnset(), and writeElements().

Definition at line 63 of file ezphpcreator.php.

Referenced by addVariableUnsetList(), and writeElements().


The documentation for this class was generated from the following file: