Maison > Article > développement back-end > 8 fonctions essentielles au développement PHP
Les programmeurs qui développent PHP doivent savoir qu'il existe de nombreuses fonctions intégrées dans PHP. Les maîtriser peut vous aider à devenir plus à l'aise dans le développement PHP. Cet article partagera 8 fonctions PHP essentielles pour le développement. très pratique et j'espère que tous les développeurs PHP pourront les maîtriser.
1. Passez n'importe quel nombre de paramètres de fonction
En programmation .NET ou J***A, les fonctions générales Le nombre Le nombre de paramètres est fixe, mais PHP vous permet d'utiliser n'importe quel nombre de paramètres. L'exemple suivant vous montre les paramètres par défaut des fonctions PHP :
// 两个默认参数的函数 function foo($arg1 = ”, $arg2 = ”) { echo “arg1: $arg1\n”; echo “arg2: $arg2\n”; } foo(‘hello','world'); /* 输出: arg1: hello arg2: world */ foo(); /* 输出: arg1: arg2: */
L'exemple suivant est l'utilisation des paramètres variables de PHP, qui utilise la méthode func_get_args() :
// 是的,形参列表为空 function foo() { // 取得所有的传入参数的数组 $args = func_get_args(); foreach ($args as $k => $v) { echo “arg”.($k+1).”: $v\n”; } } foo(); /* 什么也不会输出 */ foo(‘hello'); /* 输出 arg1: hello */ foo(‘hello', ‘world', ‘again'); /* 输出 arg1: hello arg2: world arg3: again */
2. Utilisez glob() pour rechercher des fichiers
Les noms de fonction de la plupart des fonctions PHP peuvent comprendre leur objectif littéralement, mais quand vous voyez glob(), vous ne savez peut-être pas quoi ceci est utilisé pour. En fait, glob() est identique à scandir() et peut être utilisé pour rechercher des fichiers. Veuillez consulter l'utilisation suivante :
// 取得所有的后缀为PHP的文件 $files = glob(‘*.php'); print_r($files); /* 输出: Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php ) */ 你还可以查找多种后缀名: // 取PHP文件和TXT文件 $files = glob(‘*.{php,txt}', GLOB_BRACE); print_r($files); /* 输出: Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php [4] => log.txt [5] => test.txt 13. ) */
Vous pouvez également ajouter le chemin supérieur. :
$files = glob(‘../images/a*.jpg'); print_r($files); /* 输出: Array ( [0] => ../images/apple.jpg [1] => ../images/art.jpg ) */
Si vous souhaitez obtenir le chemin absolu, vous pouvez appeler la fonction realpath() :
$files = glob(‘../images/a*.jpg'); // applies the function to each array element $files = array_map(‘realpath',$files); print_r($files); /* output looks like: Array ( [0] => C:\wamp\www\images\apple.jpg [1] => C:\wamp\www\images\art.jpg ) */
3. Récupérer de la mémoire Informations d'utilisation
Le mécanisme de recyclage de la mémoire de PHP est déjà très puissant. Vous pouvez également utiliser des scripts PHP pour obtenir l'utilisation actuelle de la mémoire, appelez la fonction memory_get_usage() pour obtenir la mémoire actuelle. utilisation, appelez la fonction memory_get_peak_usage() pour obtenir l'utilisation maximale de la mémoire. Le code de référence est le suivant :
echo “Initial: “.memory_get_usage().” bytes \n”; /* 输出 Initial: 361400 bytes */ // 使用内存 for ($i = 0; $i < 100000; $i++) { $array []= md5($i); } // 删除一半的内存 for ($i = 0; $i < 100000; $i++) { unset($array[$i]); } echo “Final: “.memory_get_usage().” bytes \n”; /* prints Final: 885912 bytes */ echo “Peak: “.memory_get_peak_usage().” bytes \n”; /* 输出峰值 Peak: 13687072 bytes */
4. Obtenez les informations sur l'utilisation du processeur
Pour obtenir l'utilisation de la mémoire, vous pouvez également utiliser getrusage () obtient l'utilisation du processeur. Cette méthode n'est pas disponible sous Windows.
print_r(getrusage()); /* 输出 Array ( [ru_oublock] => 0 [ru_inblock] => 0 [ru_msgsnd] => 2 [ru_msgrcv] => 3 [ru_maxrss] => 12692 [ru_ixrss] => 764 [ru_idrss] => 3864 [ru_minflt] => 94 [ru_majflt] => 0 [ru_nsignals] => 1 [ru_nvcsw] => 67 [ru_nivcsw] => 4 [ru_nswap] => 0 [ru_utime.tv_usec] => 0 [ru_utime.tv_sec] => 0 [ru_stime.tv_usec] => 6269 [ru_stime.tv_sec] => 0 ) */Cette structure semble très obscure, à moins de connaître très bien le CPU. Voici quelques explications :
ru_oublock : opération de sortie de bloc
ru_inblock : opération d'entrée de bloc
ru_msgsnd : message envoyé
ru_msgrcv : message reçu
ru_maxrss : taille maximale de l'ensemble des résidents
ru_ixrss : taille totale de la mémoire partagée
ru_idrss : taille totale de la mémoire non partagée
ru_minflt : recyclage des pages
ru_majflt : invalidation de page
ru_nsignals : signaux reçus
ru_nvcsw : changement de contexte actif
ru_nivcsw : changement de contexte passif
ru_nswap : zone d'échange
ru_utime.tv_usec : Temps du mode utilisateur (microsecondes)
ru_utime.tv_sec : Temps du mode utilisateur (secondes)
ru_stime.tv_usec : Temps du noyau système (microsecondes)
ru_stime.tv_sec : Temps du noyau système ? (secondes)
Pour voir combien de CPU votre script consomme, nous devons examiner le "temps du mode utilisateur" et la valeur de " Heure du noyau système". Les parties secondes et microsecondes sont fournies séparément. Vous pouvez diviser la valeur en microsecondes par 1 million et l'ajouter à la valeur en secondes pour obtenir le nombre de secondes avec une partie fractionnaire.
// sleep for 3 seconds (non-busy) sleep(3); $data = getrusage(); echo “User time: “. ($data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000); echo “System time: “. ($data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000); /* 输出 User time: 0.011552 System time: 0 */ sleep是不占用系统时间的,我们可以来看下面的一个例子: // loop 10 million times (busy) for($i=0;$i<10000000;$i++) { } $data = getrusage(); echo “User time: “. ($data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000); echo “System time: “. ($data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000); /* 输出 User time: 1.424592 System time: 0.004204 */Cela a pris environ 14 secondes de temps CPU, presque tout le temps utilisateur puisqu'il n'y avait aucun appel système.
Le temps système est le temps que le processeur passe à exécuter les instructions du noyau lors des appels système. Voici un exemple :
$start = microtime(true); // keep calling microtime for about 3 seconds while(microtime(true) – $start < 3) { } $data = getrusage(); echo “User time: “. ($data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000); echo “System time: “. ($data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000); /* prints User time: 1.088171 System time: 1.675315 */On voit que l'exemple ci-dessus consomme plus de CPU.
5. Obtenir les constantes système PHP fournit des constantes système très utiles qui vous permettent d'obtenir le numéro de ligne actuel (LINE), le fichier (FILE), le répertoire (DIR), le nom de la fonction (FUNCTION). ) ), le nom de classe (CLASS), le nom de méthode (METHOD) et l'espace de noms (NAMESPACE), un peu comme le langage C.
On peut penser que ces éléments sont principalement utilisés pour le débogage, mais pas nécessairement. Par exemple, nous pouvons utiliser ?FILE pour inclure d'autres fichiers (bien sûr, vous pouvez également utiliser DIR après PHP 5.3).
// this is relative to the loaded script's path // it may cause problems when running scripts from different directories require_once(‘config/database.php'); // this is always relative to this file's path // no matter where it was included from require_once(dirname(FILE) . ‘/config/database.php');Ce qui suit utilise LINE pour générer des informations de débogage, qui vous aideront à déboguer le programme :
// some code // … my_debug(“some debug message”, LINE); /* 输出 Line 4: some debug message */ // some more code // … my_debug(“another debug message”, LINE); /* 输出 Line 11: another debug message */ function my_debug($msg, $line) { echo “Line $line: $msg\n”; }
6. id De nombreux amis utilisent md5() pour générer des nombres uniques, mais md5() présente plusieurs défauts : 1. Non ordonné, ce qui entraîne une réduction des performances de tri dans la base de données. 2. Trop long et nécessite plus d'espace de stockage. En fait, PHP est livré avec une fonction pour générer un identifiant unique. Cette fonction est uniqid(). Voici l'utilisation :
// generate unique string echo uniqid(); /* 输出 4bd67c947233e */ // generate another unique string echo uniqid(); /* 输出 4bd67c9472340 */Cet algorithme est généré sur la base de l'horodatage du processeur, donc dans une période de temps similaire, les premiers chiffres de l'ID sont les mêmes, ce qui facilite également l'utilisation. tri des identifiants Si vous souhaitez mieux éviter la duplication, vous pouvez ajouter un préfixe avant l'identifiant, tel que :
// 前缀 echo uniqid(‘foo_'); /* 输出 foo_4bd67d6cd8b8f */ // 有更多的熵 echo uniqid(”,true); /* 输出 4bd67d6cd8b926.12135106 */ // 都有 echo uniqid(‘bar_',true); /* 输出 bar_4bd67da367b650.43684647 */
7. Sérialisation
Sérialisation PHP. La fonction est possible. Elle est largement utilisée et courante. Lorsque vous avez besoin de sauvegarder des données dans une base de données ou un fichier, vous pouvez utiliser les méthodes serialize() et unserialize() en PHP pour réaliser la sérialisation et la désérialisation. >
// 一个复杂的数组 $myvar = array( ‘hello', 42, array(1,'two'), ‘apple' ); // 序列化 $string = serialize($myvar); echo $string; /* 输出 a:4:{i:0;s:5:”hello”;i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:”two”;}i:3;s:5:”apple”;} */ // 反序例化 $newvar = unserialize($string); print_r($newvar); /* 输出 Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple ) */
// a complex array $myvar = array( ‘hello', 42, array(1,'two'), ‘apple' ); // convert to a string $string = json_encode($myvar); echo $string; /* prints ["hello",42,[1,"two"],”apple”] */ // you can reproduce the original variable $newvar = json_decode($string); print_r($newvar); /* prints Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple ) */
8、字符串压缩
当我们说到压缩,我们可能会想到文件压缩,其实,字符串也是可以压缩的。PHP提供了 gzcompress() 和gzuncompress() 函数:
$string = “Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales. “; $compressed = gzcompress($string); echo “Original size: “. strlen($string).”\n”; /* 输出原始大小 Original size: 800 */ echo “Compressed size: “. strlen($compressed).”\n”; /* 输出压缩后的大小 Compressed size: 418 */ // 解压缩 $original = gzuncompress($compressed);
几乎有50% 压缩比率。同时,你还可以使用 gzencode() 和 gzdecode() 函数来压缩,只不用其用了不同的压缩算法。
以上就是8个开发必备的PHP功能,是不是都很实用呢?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!