Skip to content

xknown/phpstan-wordpress

 
 

Repository files navigation

WordPress extensions for PHPStan

CircleCI Packagist Packagist stats PHPStan

Static analysis for the WordPress ecosystem.

Usage

  1. Set up Composer, add szepeviktor/phpstan-wordpress, autoload your plugin or theme, see example/composer.json
  2. Set up PHPStan, see example/phpstan.neon.dist - if you don't use Composer autoloading add autoload_files: and/or autoload_directories:
  3. Get packages composer update --optimize-autoloader
  4. Start analysis vendor/bin/phpstan analyze

Usage in WooCommerce webshops

Please see WooCommerce Stubs

What this extension does

  • Makes it possible to run PHPStan on WordPress plugins and themes
  • Loads php-stubs/wordpress-stubs package
  • Defines some core constants
  • Handles special functions and classes e.g. is_wp_error()

Make your code testable

  • Write clean OOP code: 1 class per file, no other code in class files outside class Name { ... }
  • Structure your code: uniform class names (WPCS or PSR-4), keep classes in a separate directory inc/
  • Add proper PHPDoc blocks to classes, properties, methods, functions
  • Handle these only in your main plugin file
    • Define constants, e.g. MYPLUGIN_PATH
    • Call register_activation_hook(), register_deactivation_hook(), register_uninstall_hook()
    • Class autoloading
    • Load translations
    • Support WP-CLI
    • Decide what to load
    • Start your plugin in a hook (plugins_loaded) - without direct execution
  • Avoid using core constants, use core functions or MYPLUGIN_PATH
  • Avoid bad parts of PHP
    • functions: eval, extract, compact, list
    • type juggling: $a = '15'; if ($a) ...
  • If you need robust code try avoiding all kinds of type casting (e.g. if needs a boolean), see Variable handling functions
  • If you are not bound by PHP 5.x consider following Neutron Standard

Packages

No packages published

Languages

  • PHP 70.3%
  • Shell 29.7%