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>
© 20072024 XoaX.net LLC. All rights reserved.