Programming with P4PHP

The following example illustrates the basic structure of a P4PHP 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 Helix Core Server using ticket-based authentication

On some servers, users might need to log in to Helix Core Server before issuing commands. The following example illustrates login using Helix Core Server tickets:

<?php

$p4 = new P4();
$p4->user = "bruno";
$p4->connect();
$p4->run_login( 'my_password' );

$opened = $p4->
run_opened();

?>

Connecting to Helix Core Server over SSL

Scripts written with P4PHP 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 P4PHP 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

?>