Programming with P4 API for PHP
The following example illustrates the basic structure of a P4 API for PHP script. The example establishes a connection, issues a command, and tests for errors resulting from the command:
<?php
$p4 = new P4();
$p4->port = "1666";
$p4->user = "fred";
$p4->client = "fred-ws";
try {
$p4->connect();
$info = $p4->run( "info" );
foreach ( $info[0] as $key => $val ) {
print "$key = $val\n";
}
$p4->run( "edit", "file.txt" );
$p4->disconnect();
} catch ( P4_Exception $e ) {
print $e->getMessage() . "\n";
foreach ( $p4->errors as $error ) {
print "Error: $error\n";
}
}
?>
This example creates a client workspace from a template and syncs it:
<?php
$template = "my-client-template";
$client_root = "/home/user/work/my-root";
$p4 = new P4();
try {
$p4->connect();
// Convert client spec into an array
$client = $p4->fetch_client( "-t", $template );
$client['Root'] = $client_root;
$p4->save_client( $client );
$p4->run_sync();
} catch ( P4_Exception $e ) {
// If any errors occur, we'll jump in here. Just log them
// and raise the exception up to the higher level
}
?>
Submitting a Changelist
This example creates a changelist, modifies it, and then submits it:
<?php
$p4 = new P4();
$p4->connect();
$change = $p4->fetch_change();
// Files were opened elsewhere and we want to
// submit a subset that we already know about.
$myfiles = array(
'//depot/some/path/file1.c',
'//depot/some/path/file1.h'
);
$change['description'] = "My changelist\nSubmitted from P4PHP\n";
$change['files'] = $myfiles;
$p4->run_submit( $change );
?>
Logging into P4 Server using ticket-based authentication
On some servers, users might need to log in to P4 Server before issuing commands. The following example illustrates login using P4 Server tickets:
<?php
$p4 = new P4();
$p4->user = "bruno";
$p4->connect();
$p4->run_login( 'my_password' );
$opened = $p4->
run_opened();
?>
Connecting to P4 Server over SSL
Scripts written with
P4 API for PHP
use any existing P4TRUST
file present in their operating
environment (by default, .p4trust
in the home directory of
the user that runs the script).
If the fingerprint returned by the server fails to match the one
installed in the P4TRUST
file associated with the script’s
run-time environment, your script will (and should!) fail to connect to
the server.
Changing your password
You can use P4 API for PHP to change your password, as shown in the following example:
<?php
$p4 = new P4();
$p4->user = "bruno";
$p4->password = "MyOldPassword";
$p4->connect();
$p4->run_password( "MyOldPassword", "MyNewPassword" );
// $p4->password is automatically updated with the encoded password
?>