wlib/utils

数组、字符串、文件、调试等辅助函数

v1.3.2 2024-02-25 10:56 UTC

This package is auto-updated.

Last update: 2024-09-25 12:35:18 UTC


README

PHP实用函数。

安装

composer require wlib/utils

可用的简化工具

数组

通用函数

// Vérifier la présence d'une clé dans un tableau ou une instance de ArrayAccess
function isArrayKey(array|ArrayAccess $aArray, int|string $mKey): bool;

// Accéder à une valeur dans un tableau ou retourner une valeur par défaut
function arrayValue(array|ArrayAccess &$aArray, int|string $mKey, mixed $mDefault = null): mixed;

// Etendre un tableau à la façon jQuery.extend()
function arrayExtend(array &$aTarget, array ...$aArrays): void;

通用访问器

function access(array &$aArray, string|array $mName = '', mixed $mDefault = null): mixed;
function unaccess(array &$aCursor, string|int ...$mKey): void;

access()unaccess() 是通用访问器,允许以简化的方式在多维数组中读取、写入和删除元素。

它们尤其可以节省在访问之前不断检查键的存在性的控制。

// Accès basique
access($array, 'keyname');
access($array, 'keyname', 'default value if keyname is not set');

// Accès multidimentionnel
access($array, 'level1.level2.level3');
// Similaire à $array['level1']['level2']['level3']...sans avoir besoin de vérifier l'existence de chaque dimension

// Ecrire un élément (ajout ou mise à jour)
access($array, ['keyname' => 'keyvalue']);

// Ecrire plusieurs éléments
access($array, [
	'key1' => 'value1',	// Similaire à $array['key1'] = 'value1';
	'key2' => 'value2',
	'a.b.c' => 'value3'	// Similaire à $array['a']['b']['c'] = 'value3';
]);

// Retirer des éléments
unaccess($array, 'key1');					// Similaire à unset($array['key1'])
unaccess($array, 'a.b.c');					// Similaire à unset($array['a']['b']['c']);
unaccess($array, 'key2', 'key3', 'a.b.c');	// Similaire à unset($array['key2'], $array['key3'], $array['a']['b']['c']);

访问超全局变量

现在您已经了解了 access()unaccess(),您可以以相同的方式访问 PHP 的超全局变量

// Encapsulation d'access()
function globals(string|array $mName = '', mixed $mDefault = null): mixed;
function server(string|array $mName = '', mixed $mDefault = null): mixed;
function get(string|array $mName = '', mixed $mDefault = null): mixed;
function post(string|array $mName = '', mixed $mDefault = null): mixed;
function files(string|array $mName = '', mixed $mDefault = null): mixed;
function cookie(string $sName = '', mixed $mDefault = null): mixed;
function session(string|array $mName = '', mixed $mDefault = null): mixed;
function request(string|array $mName = '', mixed $mDefault = null): mixed;
function env(string|array $mName = '', mixed $mDefault = null): mixed;

// Encapsulations d'unaccess()
function unglobals(string|int $mKey): void;
function unserver(string|int $mKey): void;
function unget(string|int $mKey): void;
function unpost(string|int $mKey): void;
function unfiles(string|int $mKey): void;
function uncookie(string|int $mKey): void;
function unsession(string|int $mKey): void;
function unrequest(string|int $mKey): void;
function unenv(string|int $mKey): void;

config()

function config(string $sName = '', mixed $mDefault = null): mixed;

这个函数也得益于 access() 提供的小甜头,是一个工具,可以用来组织包含例如您的应用程序配置值的数组

// Prérequis, définir le(s) dossier(s) où vont se trouver des fichiers de configuration
$_CONFIG['__include_paths'] = __DIR__.'/cfg';

// Fichier __DIR__.'/cfg/app.php'
return [
	'title'	=> 'My awesome app',
	'locale' => [
		'timezone' => 'Europe/Paris'
	]
]

// Le premier terme de $sName correspond au nom du fichier auquel accéder
echo config('app.title', 'Define your title app'); // > My awesome app
date_default_timezone_set(config('app.locale.timezone'));

调试

// Dumper les arguments donnés et continuer l'exécution
function vd(...$var): void;

// Dumper les arguments donnés et arrêter l'exécution
function vdd(...$var): void;

文件

// Créer le dossier à l'adresse donnée s'il n'existe pas déjà
function ckdir($sDirName, $iMode = 0644): bool;

字符串

// Vérifier si la chaîne donnée est au format UTF-8
function isUTF8($sString): bool;

// Retirer les accents de la chaîne donnée
function removeAccents($sString): string;

这两个函数来自 WordPress 的基础代码库!

加密

// Générer un mot de passe aléatoire de la longueur donnée
function makePassword(int $iLen): string;

// Générer une clé privée de la longueur attendue par l'algorythme donné
function makePrivateKey(string $sCipher = 'aes-256-ctr'): string;

// Crypter une chaîne
function encrypt(string $sData, string $sPrivateKey, string $sCipher = 'aes-256-ctr'): string;

// Décrypter une chaine
function decrypt(string $sData, string $sPrivateKey, string $sCipher = 'aes-256-ctr'): string;

示例

$key = makePrivateKey();
$data = 'Some content to protect';

$enc = encrypt($data, $key);

if (decrypt($enc, $key) == $data)
	echo 'All is under control !';