PHPackages                             dbeurive/util - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. dbeurive/util

ActiveLibrary

dbeurive/util
=============

This package contains PHP utilities.

1.0.21(8y ago)02.2kMITPHP

Since Apr 29Pushed 8y ago1 watchersCompare

[ Source](https://github.com/dbeurive/util)[ Packagist](https://packagist.org/packages/dbeurive/util)[ RSS](/packages/dbeurive-util/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (14)Used By (0)

- [Description](#a0)
- [Installation](#a1)
- [API documentation](#a2)
- [Quick overview](#a3)
    - [Arrays](#a4)
    - [Classes](#a5)
    - [Data](#a6)
        - [Examples](#a7)
    - [String](#a8)
    - [Code](#a9)
        - [Examples](#a10)
    - [SQL](#a11)
        - [MySql](#a12)
        - [Examples](#a13)
        - [Explanation for method `developSql()`](#a14)
    - [Unit tests](#a15)
        - [Examples](#a16)
- [Examples](#a17)

Description
=========================================

[](#description)

This package implements some basic, but frequently used, utilities.

Installation
==========================================

[](#installation)

From the command line:

```
composer require dbeurive/util

```

From your composer.json file:

```
{
    "require": {
        "dbeurive/util": "*"
    }
}

```

API documentation
===============================================

[](#api-documentation)

The detailed documentation of the API can be extracted from the code by using [PhpDocumentor](https://www.phpdoc.org/). 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
============================================

[](#quick-overview)

Please, refer to the API (that you can generate), or to the code itself for details.

Arrays
------------------------------------

[](#arrays)

FunctionDescription`array_keys_exists(array $inKeys, array $inArray)`Test if a given array contains a given list of keys.`array_keep_keys(array $inKeysToKeep, array $inArray, $inOptValuesOnly=false)`Extract a specified set of keys/values - or values only - from a given associative array.Classes
-------------------------------------

[](#classes)

FunctionDescription`implements_interface($inClassName, $inInterfaceName)`Test if a given class implements a given interface.`implements_interfaces($inClassName, array $inInterfaceNames)`Tests if a given class implements a given list of interfaces.`get_namespace($inPath)`Get the namespace for a given PHP file.Data
----------------------------------

[](#data)

FunctionDescription`to_callable_php_file($inData, $inOptFilePath=false)`Return a string that represents the PHP code that, if executed, returns a given PHP data.### Examples

[](#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
------------------------------------

[](#string)

FunctionDescription`trim($inString, $inWhere=UtilString::TRIM_END)`Remove spaces or carriage returns from a given string.`text_linearize($inString, $inOptShrinkSpaces=false, $inOptTrimEnd=false)`This method takes a string that possibly spans over several lines and transforms it so it spans over one line only.Code
----------------------------------

[](#code)

FunctionDescription`require_with_args($inPath, array $inArgs)`Loads and executes a given PHP file, just like the function `require()`, except that it allows the caller to pass parameters to the code being executed.### Examples

[](#examples-1)

```
$result = UtilCode::require_with_args('/path/to/your/file', ['parameter1' => 15, 'parameter2' => 20]);
```

SQL
----------------------------------

[](#sql)

### MySql

[](#mysql)

FunctionDescription`quoteFieldName($inFieldName)`Quote a field's name.`quoteFieldsNames(array $inFieldsNames, $inOptTableName=null, $inOptDatabaseName=null)`Quote, and optionally, fully qualify, an array of fields' names.`qualifyFieldName($inFieldName, $inTableName, $inBaseName=null)`Qualify a given field's name relatively to a given table's name, and, optionally, a given database name.`qualifyFieldsNames(array $inFieldsNames, $inTableName, $inOptDatabaseName=null)`Qualify a given list of fields' names relatively to a given table's name, and, optionally, a given database name.`developSql($inSqlTemplate, array $inSchema, $inOptAs=false, $inOptQuote=false, array $inTags=[])`"Develop" a SQL request. The term "develop" means "replace an expression like 'user.\*' into a list of fields in SELECT statements". Please see the explanation below.### Examples

[](#examples-2)

```
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()`

[](#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
-----------------------------------------

[](#unit-tests)

FunctionDescription`call_private_or_protected_static_method($inClassName, $inMethodName)`Execute a private or a protected static method from a given class.`call_private_or_protected_method($inClassName, $inMethodName, $inObject)`Execute a private or a protected non-static method from a given class, within the context of a given object.### Examples

[](#examples-3)

```
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
-------------------------------------------

[](#binary-tools)

TODO

Debug
------------------------------------

[](#debug)

TODO

Examples
=======================================

[](#examples-4)

The [unit tests](https://github.com/dbeurive/util/tree/master/tests) are good examples.

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~50 days

Recently: every ~145 days

Total

13

Last Release

3062d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2608f031e92b087ec62521ea3c7c9cc5f3fc53c9fedb346aadceb39039532b5f?d=identicon)[dbeurive](/maintainers/dbeurive)

---

Top Contributors

[![dbeurive](https://avatars.githubusercontent.com/u/18211524?v=4)](https://github.com/dbeurive "dbeurive (33 commits)")

---

Tags

phputilities

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dbeurive-util/health.svg)

```
[![Health](https://phpackages.com/badges/dbeurive-util/health.svg)](https://phpackages.com/packages/dbeurive-util)
```

###  Alternatives

[letsdrink/ouzo-goodies

Utility classes, test assertions and mocking framework extracted from Ouzo framework.

132617.9k7](/packages/letsdrink-ouzo-goodies)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
