g5
.
Code is PSR-4 (namespace hierarchy corresponds to directory hierarchy, like in java).
Top-level namespace (
g5
) is located in src/
.
Another top-level namespace is used (
vendor
), located in vendor/
.
The code does not use composer or other dependency manager, vendor code is copied in
vendor/
directory and versioned with the program.
All transformations on data are done in namespace
g5\commands
.
Association CLI - executed code
The command line interface (CLI) is handled byrun-g5.php
. To interpret the parameters typed by the user, a convention is used:
- The 3 first parameters are used to determine which class will be executed.
- These parameters correspond to the namespace hierarchy containing the executed class.
- The executed class must implement an interface,
g5\app\Command
, which impose to provide a method calledexecute()
. - Following parameters are passed in an array to the method
execute()
Example:
php run-g5.php ertel sport look datetriggers the execution of
g5\commands\ertel\sport\look::execute(['date'])
One exception
This basic and rigid mechanism proved to be sufficient for most cases. It is convenient because it permits to add new commands which can be used directly without having to change a configuration, but couldn't fill the need to handle Gauquelin files of series A. For example, to have the ability to issue commands likephp run-g5.php gauq A1 tmp2db
php run-g5.php gauq A2 tmp2db
would impose namespace
gauq
to have a sub-namespace A1
and a sub-namespace A2
etc.
To handle this situation, a new convention was added:
- If namespace corresponding to parameter 1 contains a class implementing the
Command
interface, the program transmits the control to this class. - Otherwise, default mechanism is used.
g5\commands\gauq\GauqCommand
.
Implementation of these conventions can be found in the namespace hierarchy, and in the code of class
g5\app\Run