/helpers

My personal helpers

Primary LanguagePHPMIT LicenseMIT

My personal helpers

These are some of the functions I use intensively for my projects.

As I don't want my functions to interfere with any of yours, they all use the Embryo namespace.

Array helpers

arrayDepth

This function returns the depth of a given array.

  • 0 if the array is empty
  • 1 for unidimensional arrays
  • 2 to x for every other array types

WARNING: a recursive array could currently cause an infinite loop (See issue #29).

Command Line Interface (CLI) helpers

These helpers are made specifically for command-line interfaces (CLI)

cliArguments

Just add $args = Embryo\cliArguments(); at the beginning of your CLI script, and use your CLI script as you do with a bash script.

php myScript.php -action makeSomething -verbose

The array $args will now contain :

  • action: 'makeSomething'
  • verbose: true

You can also give an array of allowed arguments in the first parameter of cliArguments(). Any parameter other than the ones listed will generate and error and die.

cliClear

Calling this function clears the command line interface. Tested with Windows and Unix environments.

cliIsInterface

Tells whether the current script is called in a command-line interface.

cliProgressBar

Displays a nice progressBar.

Since the display is updated less frequently than the spinner, it is slightly quicker than cliSpinner.

foreach($myvar as $var) {
    Embryo\cliProgressBar($currentIndex, $total);
}

cliPrompt

Prompts a question to the user, and returns a boolean: true if the answer is the first letter or the first answer, false in every other case.

If no answers are set, default answers are [y]es / [n]o

Embryo\cliPrompt('Do you want to continue ?');

Will display Do you want to continue ? [y]es / [n]o, and will return true if the answer is either y or yes.

Embryo\cliPrompt('Do you want to continue ?', ['continue', 'abort']);

Will display Do you want to continue ? [c]ontinue / [a]bort, and will return true if the answer is either c or continue.

cliQuestion

Displays a question to the user, and returns its answer as a string.

$answer = Embryo\cliQuestion('What is the airspeed velocity of an unladen swallow ?');

cliSpinner

Adds a nice spinner to your loops.

foreach($myvar as $var) {
    Embryo\cliSpinner('Manipulating data');
    // Do something
}
Embryo\cliSpinner('Done !', true);

cliTable

Displays an array as a readable table.

By default, the first value's keys will be used as header names.

$table = [
    [
        'id'    => 1,
        'name'  => 'John Doe',
        'email' => 'john@doe.com',
    ],
    [
        'id'    => 2,
        'name'  => 'Jane Doe',
        'email' => 'jane@doe.com',
    ],
];

echo Embryo\cliTable($table);

will be displayed like this :

╔════╤══════════╤══════════════╗
║ id │ name     │ email        ║
╟────┼──────────┼──────────────╢
║  1 │ John Doe │ john@doe.com ║
║  2 │ Jane Doe │ jane@doe.com ║
╚════╧══════════╧══════════════╝

Debug helpers

d

Dumps a variable. The second parameters allows to dump only if the corresponding $_REQUEST ($_GET or $_POST) parameter exists, and is equivalent to true.

\Embryo\d($myVar);

dd

Like \Embryo\d(), this function dumps a variable. It also dies just after.

If nothing has been sent to the browser before the call, and the data is an array or an object, a json header will be sent and the data will be displayed as a json string.

pp

Pretty prints a given value by wrapping a var_dump into <pre> tags

SEO helpers

seoUrl

Creates an URL from any UTF-8 compatible given string.

It removes the accents, and replaces all non-alphanumeric character by hyphens.

$url = \Embryo\seoUrl("I'm giving my résumé to the café, Señor !");
// $url equals 'i-m-giving-my-resume-to-the-cafe-senor'

unparseUrl

This method is intended to be a reverse of PHP's builtin parse_url. The parsed url's query key can be a string or an array.

string helpers

strBase64ImageEncode

Returns the correct base64 value for a given image path.

strComplete

Completes a string to a given length. If the length is shorter than the string, it will return the full, non-altered string.

$str = \Embryo\strComplete('test', 10, ' ');
// $str is 'test      '

strCut

Cuts a text at a given number of characters.

If $isTotalLength is set to true, the final maximum length will be $length. If it set to false, the final maximum length will be $length + strlen($end).

If $length is >= 40, the function will not cut into a word, but just after the previous word.

strIsFourByteUtf8

Tells whether a string contains four-byte UTF-8 characters

strIsJson

Tells whether a given string is valid JSON

strIsUtf8

Tells whether a given string is encoded in UTF-8.

strIsXml

Returns whether the given string contains valid XML code (including HTML)

strRemoveAccents

Removes all accented characters from a given string.

strRemoveFourByteUtf8Characters

Removes all four-bytes UTF-8 characters from a given UTF-8 string.

It can be used to prevent Illegal mix of collation errors in your database queries, for example, if your database is not set to UTF8MB4.