====== Coding Standards ====== ===== PHP ===== VuFind® currently uses the [[https://www.php-fig.org/psr/psr-12/|PSR-12 standard]] for its PHP code; versions 8.x and earlier were developed using the similar but now outdated [[http://pear.php.net/manual/en/standards.php|PEAR Coding Standards]]. Several additional recommendations are enforced using the php-cs-fixer tool. For help with standards compliance, see the [[development:recommended_tools#style|recommended tools page]]. ===== Javascript ===== ESLint style enforcement is in effect. It uses ESLint recommended rules with a few extra rules. For more information, see [[https://github.com/vufind-org/vufind/pull/700|this pull request]]. ===== Templates ===== Templates are a difficult mix of conditional PHP, HTML, and inline JS. Here's a few guidelines to help write clearer templates. * 2 Space Indents * Long php tags - '''' * Use if blocks instead of brackets and indent inside - '''' * Use Slots to simply buffering and conditional content, especially across templates * If a loop is producing multiple buttons, links, etc. per item, consider making a subtemplate and using ''render() ?>'' * Don't call Model methods from Views, perform this logic in the Controllers Many of these items and more are enforced and automatically corrected with [[https://github.com/FriendsOfPHP/PHP-CS-Fixer|PHP-CS-fixer]]. ===== CSS ===== No strict coding practices enforced, although the [[http://codeguide.co/|Code Guide]] by Bootstrap creator Mark Otto is a recommended read. ===== Editor Config ===== # editorconfig.org root = true [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true [*.php] indent_size = 4