etu / php-tools
Some tools for personal projects
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 0
Open Issues: 0
pkg:composer/etu/php-tools
Requires
- php: >=5.5.0
Requires (Dev)
- jakub-onderka/php-parallel-lint: @stable
- phpmd/phpmd: @stable
- phpunit/phpunit: @stable
- squizlabs/php_codesniffer: @stable
This package is not auto-updated.
Last update: 2022-01-22 03:36:06 UTC
README
Install with composer:
composer.json
{
"require": {
"etu/php-tools": "dev-master"
}
}
Example usage of Config and Db
config.ini
[@] db.dsn = 'sqlite::memory:' db.username = db.password = [example.com] db.username = live [*.dev.example.com] db.username = dev
or
config.json
{
"@": {
"db": {
"dsn": "sqlite::memory:",
"username": "",
"password": ""
}
},
"example.com": {
"db": {
"username": "live"
}
},
"*.dev.example.com": {
"db": {
"username": "dev"
}
}
}
test.php
<?php require('vendor/autoload.php'); // If using INI-file: // (Optional) Second parameter matches title in ini-file $config = new Etu\PhpTools\IniConfig('config.ini', 'optional.example.com'); // If using JSON-file // (Optional) Second parameter matches first level of objects in json-file $config = new Etu\PhpTools\JsonConfig('config.json', 'optional.example.com'); // Then load Db $db = new Etu\PhpTools\Db($config, new Etu\PhpTools\Db\PdoBackend()); $db->query('CREATE TABLE names(id INTEGER PRIMARY KEY, name VARCHAR(10));'); $db->query('INSERT INTO names(id, name) VALUES (NULL, "Alice");'); $db->query('INSERT INTO names(id, name) VALUES (NULL, "Bob");'); print_r( $db->query( 'SELECT * FROM names WHERE name = :name', [':name' => 'Alice'] )->fetchAll() );
Advanced features of JsonConfig
- Modules
- Default settings
- Environments
- Overwrites of default settings depending on environment
- Overwrites of modules
Modules
Example usage of modules and overwriting including defaults:
{
"__modules__": {
"my-db-module": {
"db": {
"username": "default",
"password": "default"
}
}
},
"@": {
"default": "values"
},
"example.com": {
"__loaded_modules__": [
"my-db-module"
],
"db": {
"username": "example.com"
}
}
}
This will result in a config that looks like this (if loading the environment example.com):
[config:Etu\PhpTools\JsonConfig:private] => stdClass Object
(
[db] => stdClass Object
(
[username] => example.com
[password] => default
)
[default] => values
)