Debug PHP? Aww, hell no!
Not when some kind of bizarro script will do it for you! Check out PHPStan! (Zbornak)
What is PHPStan? PHPStan (as in PHP Standards) checks PHP source code for errors based on the coding standards set forth by the PHP Framework Interoperability Group. (aka. making your Namespaces better with Autoloader). Easily install this static analysis tool for PHP code using the PHP Composer package manager.
If PHPStan finds errors in your code, you should use the feedback it provides to make your code comply with the standards. You may find and eliminate errors in the process. Not only will you improve your code to adhere to best standards, your efficiency might begin to improve. PHPStan provides a report of undefined variables and constants, or functions which aren’t passed the correct amount of arguments. The detection level is adjustable, so you can start out allowing anything-goes, and gradually increase the level to more strict adherences. It’s definitely worth trying!
- Install Composer to Try PHPStan
-
You must provide a valid path to a PHP executable, which Composer will use to install and configure itself to work with your PHP installation. If you’re using WSL or Linux, just type “whereis php” at the command line (without the quotes). If you’re using Xampp on Windows, that path will look something like:
C:\Xampp\php\php.exe
Composer provides access to a vast array of useful PHP packages that you can use in your project. These packages can be easily installed by executing a few simple command line statements. By using Composer, you can easily manage dependencies for your PHP project and ensure that all the required packages are installed and up to date.
#TO USE PHPSTAN with WORDPRESS: #COPY PASTE to BASH term and execute these lines cd /var/www/html #Go-to #Your #HTDOCS #DOCUMENT_ROOT composer require --dev phpstan/phpstan composer require phpstan/extension-installer composer require --dev szepeviktor/phpstan-wordpress composer show phpstan/extension-installer
Once you get there, if you’re a VS Code user, you probably want to install the PHPStan Visual Studio Code extesnion.
For WordPress developers, there is a PHPStan WordPress extension with rules specifically for the WordPress codebase.
- PHPStan 1.0 was released a little over three years ago. I’m happy to report the project is thriving! We did […]
- After three years since the initial PHPStan 1.0 release, we’re getting closer to PHPStan 2.0. After sifting through my list […]
- If you find that PHPStan reports different code on your machine and in continuous integration build system, here are the […]
- If you feel like PHPStan could be faster when analysing your project, you can debug what’s actually making it slow. […]
If you like to use print_r() or var_dump() to debug your code
Sometimes, we still want to know more about what’s going on with the code, or just want some notes in the output to help us keep everything in mind. Place the following code inside of a function() that you believe is causing problems (or place it in any function for that matter). Modify it as you see fit. It simply prints to screen some basic info about what is executing where, and in what file.
Manual Debugging Suggestion:
// __FILE__ - is a PHP native Magic Constant. // __FILE__ - provides “The full path and filename of the file with symlinks resolved. If used inside an include, the name of the included file is returned.” // __LINE__ - The current line number of the file that's processing. echo '<div class="filename_black">File: '. __FILE__ . ':' .__LINE__.'<br>'; // __FUNCTION__ - The function name, or {closure} for anonymous functions. echo '<div class="function_red">At function: <span class="bold">' . __FUNCTION__ .'</span>:' .__LINE__ .'</div>'; // pathinfo(__FILE__,PATHINFO_BASENAME) - using the PATHINFO_BASENAME flag, PHP returns just the filename // (e.g. /path/to/filename.php will return filename.php) echo '<div class="basename_green">this->basename - ' . pathinfo(__FILE__, PATHINFO_BASENAME) .':'.__LINE__.'</div>';
Version II:
PHP Classes and Methods:
Note: The __CLASS__ constant is commented out in the HTML below. If you want to view the PHP Class name, remove the <– HTML COMMENTS –> there.
This uses the PHP Native function get_defined_vars(). The key to making use of get_defined_vars()
is to recognize the scope from which it is used. Follow the previous link for official documentation. In this example, this code was placed in the method of a class in a custom WordPress plugin to see the value of get_option('plugin_options')
, so get_defined_vars()
isn’t showing anything outside of what’s set inside of that method. Using get_defined_vars()
in the global scope, however, can be too full to be very useful.
You might use this if you’re working on a WordPress plugin or theme, and you want to see the value of the results of register_setting()
for example.
$option = get_option('plugin_options'); $filteredoptions = apply_filters('plugin_loaded', get_option('plugin_options')); echo '<br><div class="bold">file: </div> : line '.__FILE__.':<strong>'.__LINE__.'</strong><br><strong class="red">Class</strong>:: <!-- '.__CLASS__.' --> <span class="green">method</span>( <strong class="blue">'.__METHOD__.' </strong>); '; echo '<br>var_dump(get_defined_vars()): '.var_dump(get_defined_vars());
- Expand Your PHP
-
- What is a PHP Magic Constant?
- What WordPress Core functions rely on the PHP native function, pathinfo() as used above?
Leave a Reply