- Your class can be no longer than a hundred lines of code.
- Your methods can be no longer than five lines of code
- You can pass no more than four parameters and you can't just make it one big hash.
- In your controller, you can only instantiate one object, to do whatever it is that needs to be done.
- Your view can only know about one instance variable.
- Your Rails view should only send messages to that object i.e., no Demeter violations.[ "thunder dome principal". Translated: one model in, one model out! ]
- Rules are meant to be broken if by breaking them you produce better code. [ ...where "better code" is validated by explaining why you want to break the rule to someone else. ]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php # -*- coding: utf-8 -*- | |
// function remove_accents() | |
/** | |
* Unaccent the input string string. An example string like `ÀØėÿᾜὨζὅБю` | |
* will be translated to `AOeyIOzoBY`. More complete than : | |
* strtr( (string)$str, | |
* "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", | |
* "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn" ); | |
* |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if(php_sapi_name() != 'cli') | |
{ | |
die('only via cli'); | |
} | |
require 'app/Mage.php'; | |
umask(0); |
Basic RESTful API with Symfony 3 + FOSRestBundle (JSON format only) + FOSUserBundle + FOSOauthServerBundle
The API we are creating in this gist will follow these rules :
- The API only returns JSON responses
- All API routes require authenticationu
- Authentication is handled via OAuth2 with
password
Grant Type only (no need for Authorization pages and such). - API versioning is managed via a subdomain (e.g.
v1.api.example.com
)
The API will be written in PHP with the Symfony 3 framework. The following SF2 bundles are used :
First of all, ensure you don't have any deprecated!
The Symfony documentation explains it well, but let's sum up:
- install the phpunit bridge (
$ composer require --dev symfony/phpunit-bridge
) - also check all your pages using web profiler and be ensure there is no
deprecation error
handled - found errors and need help about how to fix it ? I did a sort of guide.
Open port 443 on container, with a docker-compose file just add :
ports:
- 443:443
Add virtualhost config :
Listen 443 https