This package aims to provide some nice debug tools. Well, just one tool for now., (*1)
Introduction
For now, only the HexBlock is added. What it does is provide an easy way to dump binary data directly from a currently open file stream.
Example output of a gif file, where the file pointer is on position 3, the method have been told to dump the following 68 bytes., (*2)
Note that the file pointer will be reset to its initial position after the dump, essentially leaving the handle unaffected., (*3)
Start: 0x03; Length: 68 (0x44)
00: -- -- -- 38 39 61 59 00 68 00 c4 15 00 ad df ff | ---89aY. h.......
10: e5 f4 ff cb ea ff ff ff ff 98 d6 fe b7 b9 bb 81 | ........ ........
20: d2 ff 77 cc ff 8f c5 fe 54 9a f5 11 28 7d 65 ab | ..w..... T...(}e.
30: fe 52 75 a1 7a b7 fb 66 cc ff 5b cc fe 00 66 ff | .Ru.z..f ..[...f.
40: 0f 71 ff ff 39 00 b3 -- -- -- -- -- -- -- -- -- | .q..9..- --------
Usage
Call, (*4)
$block = HexBlock::createBlock($handle, $length, $encodeHtml [Default = true]);
$encodeHtml merely ensures that any html entities are encoded as such, but doesn't add any line break tags., (*5)
The function also accepts a string as an argument (from 1.0.1), and will dump that string from the first byte., (*6)
$block = HexBlock::createBlock($dataString, $length, $encodeHtml [Default = true]);
To assist in debugging, having a test string behave as a file handle can be useful. str2resource was added in DebugTools 1.0.1., (*7)
$fh = DebugHelpers::str2resource($stringData);
// work
fclose($fh); // Remember to close the handle to free up memory.
Warning
Parsing -1 as the $bytes parameter will cause the function to dump the entirety of the file., (*8)
Import
Add this requirement to your composer.json file:, (*9)
"grandt/phpdebugtools": ">=1.0.1"
Composer
If you already have Composer installed, skip this part., (*10)
Packagist, the main composer repository has a neat and very short guide., (*11)
Or you can look at the guide at the Composer site., (*12)
The easiest for first time users, is to have the composer installed in the same directory as your composer.json file, though there are better options., (*13)
Run this from the command line:, (*14)
php -r "readfile('https://getcomposer.org/installer');" | php
This will check your PHP installation, and download the composer.phar, which is the composer binary. This file is not needed on the server though., (*15)
Once composer is installed you can create the composer.json file to import this package., (*16)
{
"require": {
"grandt/phpdebugtools": ">=1.0.1"
}
}
Followed by telling Composer to install the dependencies., (*17)
php composer.phar install
this will download and place all dependencies defined in your composer.json file in the vendor directory., (*18)
Finally, you include the autoload.php file in the new vendor directory., (*19)
<?php
require 'vendor/autoload.php';
.
.
.
Example
include "../vendor/autoload.php";
use grandt\DebugTools;
$srcFile = "[path to file]";
$fh = fopen($srcFile, "rb");
echo HexBlock::createBlock($fh, 68, true);
fclose($fh);