Using Slice Checksums in PHP

The Slice compilers can optionally generate checksums of Slice definitions. For slice2php, the --checksum option causes the compiler to generate checksums. The checksums are installed automatically when the PHP code is first parsed; no action is required by the application.

In order to verify a server's checksums, a client could simply compare the two array objects using a comparison operator. However, this is not feasible if it is possible that the server might return a superset of the client's checksums. A more general solution is to iterate over the local checksums as demonstrated below:

PHP
$clientChecksums = Ice\sliceChecksums();
$serverChecksums = ...
foreach($clientChecksums as $key => $value)
{
    if(!isset($serverChecksums[$key]))
    {
        // No match found for type id!
    }
    else if($clientChecksums[$key] != $serverChecksums[$key])
    {
        // Checksum mismatch!
    }
}

In this example, the client first verifies that the server's dictionary contains an entry for each Slice type ID, and then it proceeds to compare the checksums.

See Also