Maison  >  Article  >  développement back-end  >  8 fonctions essentielles au développement PHP

8 fonctions essentielles au développement PHP

怪我咯
怪我咯original
2017-06-29 10:09:541271parcourir

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[&#39;ru_utime.tv_sec&#39;] + 
$data[&#39;ru_utime.tv_usec&#39;] / 1000000); 
echo “System time: “. 
($data[&#39;ru_stime.tv_sec&#39;] + 
$data[&#39;ru_stime.tv_usec&#39;] / 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[&#39;ru_utime.tv_sec&#39;] + 
$data[&#39;ru_utime.tv_usec&#39;] / 1000000); 
echo “System time: “. 
($data[&#39;ru_stime.tv_sec&#39;] + 
$data[&#39;ru_stime.tv_usec&#39;] / 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[&#39;ru_utime.tv_sec&#39;] + 
$data[&#39;ru_utime.tv_usec&#39;] / 1000000); 
echo “System time: “. 
($data[&#39;ru_stime.tv_sec&#39;] + 
$data[&#39;ru_stime.tv_usec&#39;] / 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&#39;s path 
// it may cause problems when running scripts from different directories 
require_once(‘config/database.php&#39;); 
// this is always relative to this file&#39;s path 
// no matter where it was included from 
require_once(dirname(FILE) . ‘/config/database.php&#39;);
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_&#39;); 
/* 输出
foo_4bd67d6cd8b8f
*/ 
// 有更多的熵 
echo uniqid(”,true); 
/* 输出
4bd67d6cd8b926.12135106
*/ 
// 都有 
echo uniqid(‘bar_&#39;,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. >

Comment sérialiser au format json ? Ne vous inquiétez pas, php l'a déjà fait pour vous. Les utilisateurs utilisant php 5.2 ou supérieur peuvent utiliser les fonctions json_encode() et json_decode() pour implémenter json. format Sérialisation, le code est le suivant :
// 一个复杂的数组 
$myvar = array( 
‘hello&#39;, 
42, 
array(1,&#39;two&#39;), 
‘apple&#39; 
); 
// 序列化 
$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&#39;, 
42, 
array(1,&#39;two&#39;), 
‘apple&#39; 

); 
// 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn