DEV Community

Russell Jones
Russell Jones

Posted on • Originally published at jonesrussell.github.io on

PSR-1: Basic Coding Standard in PHP

Ever wondered why some PHP codebases are a joy to work with while others feel like a maze? A lot of it comes down to following consistent coding standards. Let’s explore PSR-1, the foundation of modern PHP development that helps teams write cleaner, more maintainable code!

Overview of PSR-1 Rules

1. Files and Namespaces

  • Files MUST use only <?php and <?= tags
  • Files MUST use only UTF-8 without BOM for PHP code
  • Files SHOULD either declare symbols (classes, functions, constants) OR cause side-effects (generate output, modify settings, etc.) but SHOULD NOT do both

2. Namespace and Class Names

  • Classes MUST be declared in StudlyCaps
  • Class constants MUST be declared in all upper case with underscore separators

3. Class Methods

  • Method names MUST be declared in camelCase

Practical Implementation

Let’s look at a correct PSR-1 implementation from our example repository:

<?php

namespace JonesRussell\PhpFigGuide\PSR1;

class UserManager
{
    const VERSION = '1.0.0';
    const ERROR_TYPE_NOT_FOUND = 'not_found';

    public function getUserById($id)
    {
        // Implementation
        return ['id' => $id, 'name' => 'John Doe'];
    }
}

Enter fullscreen mode Exit fullscreen mode

This example demonstrates:

  • Proper namespace declaration using StudlyCaps
  • Class name in StudlyCaps
  • Constants in uppercase with underscores
  • Method name in camelCase

Common Violations and Fixes

  1. Mixed Responsibilities

  2. Incorrect Naming

Integration with Modern PHP Tools

Our example repository includes setup for:

  • PHP_CodeSniffer for PSR-1 validation (composer check-style)
  • Automated style fixing (composer fix-style)
  • PHPUnit for testing implementations
  • Composer autoloading following PSR-4

Next Steps

In our next post, we’ll explore PSR-12, which extends these basic coding standards with more comprehensive style guidelines. This post is part of our PSR Standards in PHP series.

Resources

Top comments (0)