Convention over Configuration
Last updated
Was this helpful?
Last updated
Was this helpful?
We don't want you to waste time when you program, so we follow the principles of .
Following these rules will also make it easier to maintain your code in the future by other developers.
Here are the most important rules:
- Keep it simple, stupid
- You Arent Gonna Need It
- Don’t repeat yourself
- The First 5 Principles of Object Oriented Design
- Leave your code better than you found it
Use english names only (class names, method names, comments, variables names, database table and field names, etc…).
Use class suffixes / prefixes according to .
Follow industry best practices for your directory and file structure:
- A skeleton repository for packages
- Names for your root-level directories
Entity property names are used for column names.
Entity properties that are named ID or classname ID are recognized as primary key properties.
A property is interpreted as a foreign key property if it's named <navigation property name><primary key property name>
(for example, StudentID for the Student navigation property since the Student entity's primary key is ID). Foreign key properties can also be named the same - simply <primary key property name>
(for example, EnrollmentID since the Enrollment entity's primary key is EnrollmentID).
Methods without return statement must declared with void
as their return type.
Don’t mix data types for parameters and return types, except for nullable
.
Don’t extend
classes or create abstract
classes for the sake of “code reuse”, except for traits with test code only.
Create final
classes by default, except you have to mock it (e.g. repositories).
Create private
methods by default. Don’t create protected
methods.
All method parameters must be used.
Use composition over inheritance.
Declare all class dependencies only within the constructor.
Don’t inject the container (PSR-11). The service locator is an anti-pattern.
A constructor can accept only dependencies as object.
Scalar data types (string, int, float, array) are not allowed for the constructor. Pass them as parameter object.
Use a static code analyzer to detect bugs and errors. For example:
http://bestpractices.thecodingmachine.com/
https://odan.github.io/learn-php/
For files that are uploaded by users, each module should use the /uploads
folder
Table names should be singular, e.g. when we have a User entity class, the table in the database should be named user
by default. See the reasoning behind it
All methods must have and return type declaration.
Class properties must have (PHP 7.4+).
In this section we used materials from various authors, incl.