This PHP program demonstrates how to print debugging values with specialized functions and variables.
<!DOCTYPE html>
<html>
<head>
<title>XoaX.net PHP</title>
</head>
<body>
<?php
// Define a simple interface.
interface IShape
{
public function GetArea();
}
// Define an interface that extends the other one.
interface INamedShape extends IShape
{
public function GetName();
}
// Define an abstract polygon class.
abstract class CAPolygon implements INamedShape
{
public $mdaSideLengths = [];
public function __construct($daSidesLengths) {
foreach ($daSidesLengths as $dSide) {
array_push($this->mdaSideLengths, $dSide);
}
}
public function GetName() {
return "Polygon";
}
}
// Define a simple triangle class that extends polygon.
class CTriangle extends CAPolygon
{
public function __construct($daSidesLengths) {
// This will ensure that the polygon only has three sides
parent::__construct(array($daSidesLengths[0], $daSidesLengths[1], $daSidesLengths[2]));
}
public function GetArea() {
$dSemiPerimeter = 0.0;
for ($i = 0; $i < 3; ++$i) {
$dSemiPerimeter += $this->mdaSideLengths[$i];
}
$dSemiPerimeter /= 2;
$dArea = $dSemiPerimeter;
for ($i = 0; $i < 3; ++$i) {
$dArea *= ($dSemiPerimeter - $this->mdaSideLengths[$i]);
}
$dArea = sqrt($dArea);
return $dArea;
}
public function PrintBackTrace() {
debug_print_backtrace();
}
public function PrintVarsInScope() {
echo '<pre>';
print_r(get_defined_vars());
echo '</pre>';
}
public function PrintDebugBackTrace() {
echo '<pre>';
// print_r(debug_backtrace()) is the same as debug_print_backtrace();
print_r(debug_backtrace());
echo '</pre>';
}
}
// Declare and allocate an array and a triangle object.
$daSideLengths = [ 1.0, 1.0, 1.0];
$qTriangle = new CTriangle($daSideLengths);
// Call the triangle methods and print the results.
echo "<ul><strong>Methods</strong>";
echo "<li>Triangle Name = ".$qTriangle->GetName()."</li>";
echo "<li>Triangle Area = ".$qTriangle->GetArea()."</li>";
echo "</ul>";
// Check the types of a string, double, array, and a triangle.
echo "<ul><strong>Types</strong>";
echo "<li>Triangle Name = ".gettype($qTriangle->GetName())."</li>";
echo "<li>Triangle Area = ".gettype($qTriangle->GetArea())."</li>";
echo "<li>Triangle mdaSideLengths = ".gettype($qTriangle->mdaSideLengths)."</li>";
echo "<li>Triangle = ".gettype($qTriangle)."</li>";
echo "</ul>";
// Check the classes of a string, double, array, and a triangle.
echo "<ul><strong>Classes</strong>";
echo "<li>Triangle Name = ".get_class($qTriangle->GetName())."</li>";
echo "<li>Triangle Area = ".get_class($qTriangle->GetArea())."</li>";
echo "<li>Triangle mdaSideLengths = ".get_class($qTriangle->mdaSideLengths)."</li>";
echo "<li>Triangle = ".get_class($qTriangle)."</li>";
echo "</ul>";
// Create a variable name for the array of all defind variables.
$qAllVars = get_defined_vars();
// Call print_r() on all of the variables.
echo "<ul><strong>print_r</strong><br/><br />";
echo "<li>Triangle Name = ".print_r($qTriangle->GetName())."</li><br/>";
echo "<li>Triangle Area = ".print_r($qTriangle->GetArea())."</li><br/>";
echo "<li>Triangle mdaSideLengths = ".print_r($qTriangle->mdaSideLengths)."</li><br/>";
echo "<li>Triangle = ".print_r($qTriangle)."</li><br/>";
echo "<li>AllVars = ".print_r($qAllVars)."</li><br/>";
echo "</ul>";
// Call var_dump() on all of the variables.
echo "<ul><strong>var_dump</strong><br/><br />";
echo "<li>Triangle Name = ".var_dump($qTriangle->GetName())."</li><br/>";
echo "<li>Triangle Area = ".var_dump($qTriangle->GetArea())."</li><br/>";
echo "<li>Triangle mdaSideLengths = ".var_dump($qTriangle->mdaSideLengths)."</li><br/>";
echo "<li>Triangle = ".var_dump($qTriangle)."</li><br/>";
echo "<li>AllVars = ".var_dump($qAllVars)."</li><br/>";
echo "</ul>";
// Call var_export() on all of the variables.
echo "<ul><strong>var_export</strong><br/><br />";
echo "<li>Triangle Name = ".var_export($qTriangle->GetName(), true)."</li><br/>";
echo "<li>Triangle Area = ".var_export($qTriangle->GetArea(), true)."</li><br/>";
echo "<li>Triangle mdaSideLengths = ".var_export($qTriangle->mdaSideLengths, true)."</li><br/>";
echo "<li>Triangle = ".var_export($qTriangle, true)."</li><br/>";
echo "<li>AllVars = ".var_export($qAllVars, true)."</li><br/>";
echo "</ul>";
// Call debug_zval_dump() on all of the variables.
echo "<ul><strong>debug_zval_dump </strong><br/><br />";
echo "<li>Triangle Name = ".debug_zval_dump($qTriangle->GetName())."</li><br/>";
echo "<li>Triangle Area = ".debug_zval_dump($qTriangle->GetArea())."</li><br/>";
echo "<li>Triangle mdaSideLengths = ".debug_zval_dump($qTriangle->mdaSideLengths)."</li><br/>";
echo "<li>Triangle = ".debug_zval_dump($qTriangle)."</li><br/>";
echo "<li>AllVars = ".debug_zval_dump($qAllVars)."</li><br/>";
echo "</ul>";
$qTriangle->PrintBackTrace();
echo "<br /><br />";
// Call print_r() and format it with a pre element.
echo "<strong>Defined Variables</strong>";
echo '<pre>';
print_r(get_defined_vars());
echo '</pre>';
// There are no variables inside the function scope.
// So, this array is empty.
echo "<strong>Scoped Defined Variables</strong>";
$qTriangle->PrintVarsInScope();
echo "<strong>Debug Backtrace</strong>";
$qTriangle->PrintDebugBackTrace()
?>
</body>
</html>
© 20072025 XoaX.net LLC. All rights reserved.