dbeurive / util
This package contains PHP utilities.
Installs: 2 156
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires (Dev)
- phpunit/phpunit: >=5.5.0
README
Description
This package implements some basic, but frequently used, utilities.
Installation
From the command line:
composer require dbeurive/util
From your composer.json file:
{
"require": {
"dbeurive/util": "*"
}
}
API documentation
The detailed documentation of the API can be extracted from the code by using PhpDocumentor.
The file phpdoc.xml
contains the required configuration for PhpDocumentor
.
To generate the API documentation, just move into the root directory of this package and run PhpDocumentor
from this location.
Note:
Since all the PHP code is documented using PhpDoc annotations, you should be able to exploit the auto completion feature from your favourite IDE. If you are using Eclipse, NetBeans or PhPStorm, you probably won’t need to consult the generated API documentation.
Quick overview
Please, refer to the API (that you can generate), or to the code itself for details.
Arrays
Classes
Data
Examples
$data = ['A', 'B', 'C']; UtilData::to_callable_php_file($data, '/path/to/your/file.php'); // ... $newData = require '/path/to/your/file.php'; // $newData = ['A', 'B', 'C'];
String
Code
Examples
$result = UtilCode::require_with_args('/path/to/your/file', ['parameter1' => 15, 'parameter2' => 20]);
SQL
MySql
Examples
UtilMySql::quoteFieldName('id'); // => '`id`' UtilMySql::quoteFieldName('user.id'); // => '`user`.`id`' UtilMySql::quoteFieldName('prod.user.id'); // => '`prod`.`user`.`id`' UtilMySql::quoteFieldsNames(['id', 'login', 'password']); // => ['`id`', '`login`', '`password`'] UtilMySql::quoteFieldsNames(['user.id', 'login', 'password']); // => ['`user`.`id`', '`login`', '`password`'] UtilMySql::quoteFieldsNames(['id', 'login', 'password'], 'user'); // => ['`user`.`id`', '`user`.`login`', '`user`.`password`'] UtilMySql::quoteFieldsNames(['user.id', 'login', 'password'], 'user'); // => ['`user`.`id`', '`user`.`login`', '`user`.`password`'] UtilMySql::quoteFieldsNames(['db.user.id', 'login', 'password'], 'user'); // => ['`db`.`user`.`id`', '`user`.`login`', '`user`.`password`'] UtilMySql::quoteFieldsNames(['user.id', 'login', 'password'], 'user', 'prod'); // => ['`prod`.`user`.`id`', '`prod`.`user`.`login`', '`prod`.`user`.`password`'] UtilMySql::quoteFieldsNames(['prod.user.id', 'login', 'password'], 'user', 'prod'); // => ['`prod`.`user`.`id`', '`prod`.`user`.`login`', '`prod`.`user`.`password`'] UtilMySql::qualifyFieldName('id', 'user'); // => 'user.id' UtilMySql::qualifyFieldName('user.id','user'); // => 'user.id' UtilMySql::qualifyFieldName('db.user.id', 'user'); // => 'db.user.id' UtilMySql::qualifyFieldName('id', 'user', 'db'); // => 'db.user.id' UtilMySql::qualifyFieldName('user.id', 'user', 'db'); // => 'db.user.id' UtilMySql::qualifyFieldName('db.user.id', 'user', 'db'); // => 'db.user.id' UtilMySql::qualifyFieldsNames(['id', 'login'], 'user'); // => ['user.id', 'user.login'] UtilMySql::qualifyFieldsNames(['user.id', 'login'], 'user'); // => ['user.id', 'user.login'] UtilMySql::qualifyFieldsNames(['id', 'login'], 'user', 'prod'); // => ['prod.user.id', 'prod.user.login'] UtilMySql::qualifyFieldsNames(['user.id', 'login'], 'user', 'prod'); // => ['prod.user.id', 'prod.user.login'] UtilMySql::qualifyFieldsNames(['prod.user.id', 'login'], 'user', 'prod'); // => ['prod.user.id', 'prod.user.login']
Explanation for method developSql()
First, let's consider these 3 examples:
Example 1:: The SQL "template" below:
SELECT user.* FROM `user`
Can be developed into one of these expressions:
SELECT user.id, user.login FROM `user`
SELECT user.id AS 'user.id', user.login AS 'user.login' FROM `user`
SELECT `user`.`id` AS 'user.id', `user`.`login` AS 'user.login' FROM `user`
Example 2:: The SQL "template" below:
SELECT user.*, profile.* FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
Can be developed into one of these expressions:
SELECT user.id, user.login, profile.id, profile.age, profile.fk_user_id FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
SELECT user.id AS 'user.id', user.login AS 'user.login', profile.id AS 'profile.id', profile.age AS 'profile.age', profile.fk_user_id AS 'profile.fk_user_id' FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
SELECT `user`.`id` AS 'user.id', `user`.`login` AS 'user.login', `profile`.`id` AS 'profile.id', `profile`.`age` AS 'profile.age', `profile`.`fk_user_id` AS 'profile.fk_user_id' FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
Example 3:: And the (silly) SQL "template" below:
SELECT __USER__ FROM `user` WHERE user.login='user.*'
Can be developed into one of these expressions:
SELECT user.id, user.login FROM `user` WHERE user.login='user.*'
SELECT user.id AS 'user.id', user.login AS 'user.login' FROM `user` WHERE user.login='user.*'
SELECT `user`.`id` AS 'user.id', `user`.`login` AS 'user.login' FROM `user` WHERE user.login='user.*'
For example 1
$template = "SELECT user.* FROM `user`";
$schema = [ 'user' => ['id', 'login'], 'profile' => ['id', 'age', 'fk_user_id'] ];
$result = UtilMySql::developSql($template, $schema, false, false); // => SELECT user.id, user.login FROM `user`
$result = UtilMySql::developSql($template, $schema, true, false); // => SELECT user.id AS 'user.id', user.login AS 'user.login' FROM `user`
$result = UtilMySql::developSql($template, $schema, true, true); // => SELECT `user`.`id` AS 'user.id', `user`.`login` AS 'user.login' FROM `user`
For example 2
$template = "SELECT user.*, profile.* FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id";
$schema = [ 'user' => ['id', 'login'], 'profile' => ['id', 'age', 'fk_user_id'] ];
$result = UtilMySql::developSql($template, $schema, false, false); // => SELECT user.id, user.login, profile.id, profile.age, profile.fk_user_id FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
$result = UtilMySql::developSql($template, $schema, true, false); // => SELECT user.id AS 'user.id', user.login AS 'user.login', profile.id AS 'profile.id', profile.age AS 'profile.age', profile.fk_user_id AS 'profile.fk_user_id' FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
$result = UtilMySql::developSql($template, $schema, true, true); // => SELECT `user`.`id` AS 'user.id', `user`.`login` AS 'user.login', `profile`.`id` AS 'profile.id', `profile`.`age` AS 'profile.age', `profile`.`fk_user_id` AS 'profile.fk_user_id' FROM `user` INNER JOIN `profile` ON user.id=profile.fk_user_id
For example 3
$template = "SELECT __USER__ FROM `user` WHERE user.login='user.*'";
$schema = [ 'user' => ['id', 'login'], 'profile' => ['id', 'age', 'fk_user_id'] ];
$tags = ['__USER__' => 'user.*'];
$result = UtilMySql::developSql($template, $schema, false, false, $tags); // => SELECT user.id, user.login FROM `user`
$result = UtilMySql::developSql($template, $schema, true, false, $tags); // => SELECT user.id AS 'user.id', user.login AS 'user.login' FROM `user`
$result = UtilMySql::developSql($template, $schema, true, true, $tags); // => SELECT `user`.`id` AS 'user.id', `user`.`login` AS 'user.login' FROM `user`
Unit tests
Examples
UtilUnitTest::call_private_or_protected_static_method('ClassToTest', '__privateStatic', 10); UtilUnitTest::call_private_or_protected_method('ClassToTest', '__privateNonStatic', $o, 10); // $o is an instance of class "ClassToTest".
Binary tools
TODO
Debug
TODO
Examples
The unit tests are good examples.