meta data for this page
Code Standards
We're trying to standardize the code for ITFlow to make it cleaner and easier to understand/contribute to. We see this as an ongoing, iterative process.
Variable Naming
- Javascript - camelCase
- PHP - under_score separator all lowercase
Formatting
- Tab Spacing - Converting everything to 4 spaces
- Generally moving towards PSR 1, but we're not too strict
SQL Table Structure
- Table Naming: Using plural naming. Example users
- Column Naming: Define by non-plural word of the table name separated with an underscore. Example table users has user_id user_first_name
- Primary Keys: Defined first and are defined with the non-plural word of the table with id at the end example user_id
- Foreign Keys: Defined by the linked table primary_key field name ex table name companies foreign key company_user_id links to table users primary key user_id
- Field Ordering: Primary Key → Data Fields → created_at → Foreign Keys
Code Structure
- Procedural Code along with some object-oriented ideas. This makes the code clean and simple, as well as easy to contribute to.
- Less is more approach, but sometimes more for better code explanation
- Consider how others will use features. Generic features/code/concepts that can be useful to everyone are more helpful than a feature that solves your specific unique requirement.
File/Folder Structure
- /api
- /v1
- /module/
- /css
- /js
- /plugins
- /bootstrap
- /phpMailer
- /Jquery
- /uploads
- /portal
- /post
- individual modules
Crucial PHP Files
- ajax.php - Used to dynamically load/populate content
- post.php - This file is used for all forms to POST to as well as GET. This acts as both the “model” and “controller” in a traditional MVC architecture. Individual files are in the post directory
- check_login.php - Checks to see if a user is logged in otherwise send to login screen
- header.php - Beginning of HTML data and added CSS libraries
- footer.php - End of HTML Data and added js Libraries
- config.php - DB Connection and other defined PHP vars
- README - General info about the app: Install guide, documentation, etc.
- LICENSE - Licensing & copyright info
- setup.php - Initial setup file (configures database, config.php, etc)
PHP File naming
section_element_action_function.php
E.g.:
- user_add_modal.php
- client_contact_add_modal.php