In constructing a web application with more than 2 PHP source modules, I found that it is useful to have a quick and easy way of finding a syntax error that may exist in one (or more) of a list of included modules.
Getting a List of PHP Includes
There is a function in PHP for this, which we will get back to in a moment. For right now I wanted to address some things we can do at a Bash prompt to troubleshoot why a script may not be sending any output to the browser on STDOUT.
That's a very common situation when you're working on a large application with many modules. It becomes important in those situations to be meticulous about syntax checking each change in any code before making additional changes.
I've been using the 'Lint' mechanism provided by PHP to syntax check PHP source code. It works like this:
$php -l <fileName>
Now, some of you might already be seeing the implications of this. Hows about:
$for fn in \ `grep require frmPlayerInformation_body.09.inc\ | perl -ne '/\"([a-zA-Z0-9.]+)\"\;/ && print "$1\n";'` ;; do echo $fn ;; php -l $fn ;; echo "########" ;; done
The implications for scripting this operation from the command line are clear.
PHP provides a function to get a list of module dependencies for a running script. It's called
get_included_files()
… and here's the URL for the docs: http://us2.php.net/manual/en/function.get-included-files.php
Problems with this Approach
There is at least one serious deficiency inherent in using the require
, require_once
, include
, and include_once
directives as the sole indicators of module dependency; that is that, simply, the modules which are required or "included" due to HTML element attribute values.
Examples include the ACTION
attrubute value(s) of HTML FORM
element(s), the SRC
attribute values for SCRIPT
elements. and so on. IFRAME
and LINK
elements are also among those that can cause a module dependency within the HTML, CSS, or Javascript layer(s) generated by PHP code of a site.