Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 API for PHP Documentation | 2025.2

# P4 API for PHP Classes

The P4 module consists of several public classes:

- P4
- P4_Exception
- P4_DepotFile
- P4_Revision
- P4_Integration
- P4_Map
- P4_MergeData
- P4_OutputHandlerAbstract
- P4_Resolver

The following tables provide more details about each public class.

## P4

P4 Server client class. Handles connection and interaction with the P4 Server. There is one instance of each connection.

The following table lists properties of the class `P4` in P4 API for PHP. The properties are readable and writable unless indicated otherwise. The properties can be strings, arrays, or integers.

Property | Description
--- | ---
`api_level` | API compatibility level. (Lock server output to a specified server level.)
`charset` | Charset for Unicode servers.
`client` | `P4CLIENT`, the name of the client workspace to use.
`cwd` | Current working directory.
`errors` | A read-only array containing the error messages received during execution of the last command.
`exception_level` | The exception level of the P4 instance. Values can be: `0` : no exceptions are raised `1` : only errors are raised as exceptions `2` : warnings are also raised as exceptions The default value is 2.
`expand_sequences` | Control whether keys with trailing numbers are expanded into arrays; by default, true, for backward-compatibility.
`handler` | An output handler.
`host` | `P4HOST`, the name of the host used.
`input` | Input for the next command. Can be a string, or an array.
`maxlocktime` | MaxLockTime used for all following commands.
`maxresults` | MaxResults used for all following commands.
`maxscanrows` | MaxScanRows used for all following commands.
`p4config_file` | The location of the configuration file used (`P4CONFIG`). This property is read-only.
`password` | `P4PASSWD`, the password used.
`port` | `P4PORT`, the port used for the connection
`prog` | The name of the script.
`server_level` | Returns the current P4 Server level. This property is read only.
`streams` | Enable or disable support for streams.
`tagged` | To disable tagged output for the following commands, set the value to 0 or False. By default, tagged output is enabled.
`ticket_file` | `P4TICKETS`, the ticket file location used.
`user` | `P4USER`, the user under which the connection is run.
`version` | The version of the script.
`warnings` | A read-only array containing the warning messages received during execution of the last command.

The following table lists all public methods of the class `P4`.

Method | Description
--- | ---
`connect()` | Connects to the P4 Server.
`connected()` | Returns `True` if connected and the connection is alive, otherwise `False`.
`delete_<spectype>()` | Deletes the spec <spectype>. Equivalent to the command:
    P4::run( "<spectype>", "-d" );
`disconnect()` | Disconnects from the P4 Server.
`env()` | Get the value of a P4 Server environment variable, taking into account `P4CONFIG` files and (on Windows or macOS) the registry or user preferences.
`identify()` | Returns a string identifying the P4 API for PHP module. (This method is static.)
`fetch_<spectype>()` | Fetches the spec <spectype>. Equivalent to the command:
    P4::run( "<spectype>", "-o" );
`format_<spectype>()` | Converts the spec <spectype> into a string.
`parse_<spectype>()` | Parses a string representation of the spec <spectype> and returns an array.
`run()` | Runs a command on the server. Needs to be connected, or an exception is raised.
`run_cmd()` | Runs the command cmd. Equivalent to:
    P4::run( "cmd" );
`run_filelog()` | This command returns an array of `P4_DepotFile` objects. Specialization for the `run()` command.
`run_login()` | Logs in using the specified password or ticket.
`run_password()` | Convenience method: updates the password. Takes two arguments: oldpassword, newpassword.
`run_resolve()` | Interface to `p4 resolve`.
`run_submit()` | Convenience method for submitting changelists. When invoked with a change spec, it submits the spec. Equivalent to:
    p4::input = myspec;
    p4::run( "submit", "-i" );
`save_<spectype>()` | Saves the spec <spectype>. Equivalent to the command:
    P4::run( "<spectype>", "-i" );

## P4_Exception

Exception class. Instances of this class are raised when errors and/or (depending on the `exception_level` setting) warnings are returned by the server. The exception contains the errors in the form of a string. `P4_Exception` extends the standard PHP `Exception` class.

## P4_DepotFile

Container class returned by `P4::run_filelog()`. Contains the name of the depot file and an array of `P4_Revision` objects.

Property | Description
--- | ---
`depotFile` | Name of the depot file
`revisions` | Array of Revision objects.

## P4_Revision

Container class containing one revision of a `P4_DepotFile` object.

Property | Description
--- | ---
`action` | Action that created the revision.
`change` | Changelist number.
`client` | Client workspace used to create this revision.
`desc` | Short changelist description.
`depotFile` | The name of the file in the depot.
`digest` | MD5 digest of the revision.
`fileSize` | File size of this revision.
`integrations` | Array of `P4_Integration` objects.
`rev` | Revision.
`time` | Timestamp.
`type` | File type.
`user` | User that created this revision.

## P4_Integration

Container class containing one integration for a `P4_Revision` object.

Property | Description
--- | ---
`how` | Integration method (merge/branch/copy/ignored).
`file` | Integrated file.
`srev` | Start revision.
`erev` | End revision.

## P4_Map

A class that allows users to create and work with P4 Server mappings without requiring a connection to the P4 Server.

Method | Description
--- | ---
__construct() | Construct a new Map object.
join() | Joins two maps to create a third (static method).
clear() | Empties a map.
count() | Returns the number of entries in a map.
is_empty() | Tests whether or not a map object is empty.
insert() | Inserts an entry into the map.
translate() | Translate a string through a map.
includes() | Tests whether a path is mapped.
reverse() | Returns a new mapping with the left and right sides reversed.
lhs() | Returns the left side as an array.
rhs() | Returns the right side as an array.
as_array() | Returns the map as an array.

## P4_MergeData

Class encapsulating the context of an individual merge during execution of a `p4 resolve` command. Passed to `P4::run_resolve()`.

Property | Description
--- | ---
`your_name` | Returns the name of "your" file in the merge. (file in workspace)
`their_name` | Returns the name of "their" file in the merge. (file in the depot)
`base_name` | Returns the name of "base" file in the merge. (file in the depot)
`your_path` | Returns the path of "your" file in the merge. (file in workspace)
`their_path` | Returns the path of "their" file in the merge. (temporary file on workstation into which `their_name` has been loaded)
`base_path` | Returns the path of the base file in the merge. (temporary file on workstation into which `base_name` has been loaded)
`result_path` | Returns the path to the merge result. (temporary file on workstation into which the automatic merge performed by the server has been loaded.)
`merge_hint` | Returns hint from server as to how user might best resolve merge.

## P4_OutputHandlerAbstract

Handler class that provides access to streaming output from the server; set `$p4->handler` to an instance of a subclass of `P4_OutputHandlerAbstract` to enable callbacks:

Method | Description
--- | ---
`outputBinary()` | Process binary data.
`outputInfo()` | Process tabular data.
`outputMessage()` | Process information or errors.
`outputStat()` | Process tagged output.
`outputText()` | Process text data.

## P4_Resolver

Abstract class for handling resolves in Perforce. This class must be subclassed in order to be used.

Method | Description
--- | ---
`resolve()` | Perform a resolve and return the resolve decision as a string.

Your search for returned results