Technical resources useful for learning how Raddle is built

The following is a list of resources that are useful in learning the technologies Raddle is built with.

First, here is our gitlab page:

https://gitlab.com/postmill/Postmill

On a personal note, I learnt programming entirely in my spare time using resources I found on the internet, before I went to uni. If you have determination, you can learn to build your own cool software without any formal education. Many of the resources I learnt from are listed here.

Also, note that you cannot simply read articles on the internet and become an expert programmer. You need to get your hands dirty. It was trial and error that taught me how to build large(ish) applications, not reading blogs or watching videos.

-- /u/emma

(emphasis indicates a reference of high importance.)

  1. PHP

  2. Tools

  3. Symfony

  4. Example Symfony applications

  5. Databases, abstraction layers, object-relational mappers

  6. Design patterns

  7. Design patterns that are Bad and Wrong

  8. Software

PHP

The entire backend is written in PHP, so obviously learning the language and some related tools & conventions is a good place to begin.

  • Official PHP manual

  • PSR-4

    Autoloading standard, defines a standardised directory structure for autodiscovery of classes, interfaces and traits.

  • Autoloading explained
    PSR-0 has been superseded by PSR-4, but this is still a good explanation of how autoloading in PHP works and why it's needed.

  • PHP: The Right Way

  • phpDocumentor

    We're interested in the annotation format, not the software. IDEs will use the annotations for better code analysis.

Tools

Symfony

Example Symfony applications

These aren't always good examples, as Raddle tends to adhere to different coding conventions.

Databases, abstraction layers, object-relational mappers

Design patterns

Design patterns that are Bad and Wrong

Okay, these patterns aren't always bad and wrong, but they tend to be used for solving problems that are better solved in other ways.

  • Model–view–controller pattern

    MVC is useful for demonstrating Separation of Concerns. Its usefulness stops there.

    The pattern is an oversimplification of how applications are actually structured, and blindly abiding by the pattern means fitting square pegs into round holes. A web application consists of front controllers, controller methods, routing, templates, entities, DTOs, and many more things. Trying to place all these concepts into three rigidly defined categories is a typical mistake beginners will make when developing their own frameworks, ironically enough, actually leading to breaking SoC.

  • Global Variables Are Bad

    • Raddle doesn't declare or look up a single global variable, except when setting up the application.

    • The God object, a similar evil.

  • What is so bad about singletons?

Software

  • PhpStorm

    Proprietary IDE for writing PHP programs. costs money, but if you're a student you get it for free. Alternatively, if you have IDEA Ultimate or WebStorm, you could add the PHP plugins to either of those and basically get PHPStorm's functionality.