Heim  >  Artikel  >  Backend-Entwicklung  >  8 wesentliche Funktionen für die PHP-Entwicklung

8 wesentliche Funktionen für die PHP-Entwicklung

怪我咯
怪我咯Original
2017-06-29 10:09:541268Durchsuche

Programmierer, die PHP entwickeln, sollten wissen, dass es viele integrierte Funktionen in PHP gibt. Die Beherrschung dieser Funktionen kann Ihnen dabei helfen, sich mit der PHP-Entwicklung vertrauter zu machen sehr praktisch und ich hoffe, dass alle PHP-Entwickler sie beherrschen können.

1. Übergeben Sie eine beliebige Anzahl von Funktionsparametern
In der .NET- oder J***A-Programmierung sind allgemeine Funktionen die Nummer Die Anzahl der Parameter ist festgelegt, aber PHP ermöglicht Ihnen die Verwendung einer beliebigen Anzahl von Parametern. Das folgende Beispiel zeigt Ihnen die Standardparameter von PHP-Funktionen:

// 两个默认参数的函数 
function foo($arg1 = ”, $arg2 = ”) { 
echo “arg1: $arg1\n”; 
echo “arg2: $arg2\n”; 
} 
foo(‘hello','world'); 
/* 输出:
arg1: hello
arg2: world
*/ 
foo(); 
/* 输出:
arg1:
arg2:
*/

Das folgende Beispiel ist die Verwendung variabler Parameter von PHP, die die Methode func_get_args() verwendet:

// 是的,形参列表为空 
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. Verwenden Sie glob(), um Dateien zu finden
Die Funktionsnamen der meisten PHP-Funktionen können ihren Zweck wörtlich verstehen, aber wenn Sie glob() sehen, wissen Sie vielleicht nicht, was Dies wird verwendet für. Tatsächlich ist glob() dasselbe wie scandir() und kann zum Suchen von Dateien verwendet werden:

// 取得所有的后缀为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.
)
*/

Sie können auch den oberen Pfad hinzufügen :

$files = glob(‘../images/a*.jpg'); 
print_r($files); 
/* 输出:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/

Wenn Sie den absoluten Pfad erhalten möchten, können Sie die Funktion realpath() aufrufen:

$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. Speicher abrufen Nutzungsinformationen

Der Speicherrecyclingmechanismus von PHP ist bereits sehr leistungsfähig. Sie können auch PHP-Skripte verwenden, um die aktuelle Speichernutzung abzurufen. Rufen Sie die Funktion memory_get_usage() auf, um den aktuellen Speicher abzurufen Rufen Sie die Funktion memory_get_peak_usage() auf, um die maximale Speichernutzung zu ermitteln. Der Referenzcode lautet wie folgt:

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
*/

Informationen zur CPU-Nutzung abrufen

Um die Speichernutzung zu erhalten, können Sie auch PHPs getrusage () ermittelt die CPU-Auslastung. Diese Methode ist unter Windows nicht verfügbar.

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
)
*/
Diese Struktur erscheint sehr unklar, es sei denn, Sie kennen die CPU sehr gut. Hier einige Erklärungen:



ru_oublock: Ausgabeoperation blockieren
ru_inblock: Eingabeoperation blockieren

ru_msgsnd: Gesendete Nachricht

ru_msgrcv: Empfangene Nachricht

ru_maxrss: Maximale residente Satzgröße

ru_ixrss: Gesamtgröße des gemeinsam genutzten Speichers

ru_idrss: Gesamtgröße des nicht gemeinsam genutzten Speichers

ru_minflt: Seitenrecycling

ru_majflt: Seitenungültigmachung

ru_nsignals: Empfangene Signale

ru_nvcsw: Aktiver Kontextwechsel

ru_nivcsw: Passiver Kontextwechsel

ru_nswap: Swap-Bereich

ru_utime.tv_usec: Benutzermoduszeit (Mikrosekunden)

ru_utime.tv_sec: Benutzermoduszeit (Sekunden)

ru_stime.tv_usec: Systemkernelzeit (Mikrosekunden)

ru_stime.tv_sec: Systemkernelzeit? (Sekunden)

Um zu sehen, wie viel CPU Ihr Skript verbraucht, müssen wir uns die „Benutzermoduszeit“ und den Wert von „ Systemkernzeit". Die Sekunden- und Mikrosekundenteile werden separat bereitgestellt. Sie können den Mikrosekundenwert durch 1 Million dividieren und zum Sekundenwert addieren, um die Anzahl der Sekunden mit einem Bruchteil zu erhalten.

// 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
*/
Dies nahm etwa 14 Sekunden CPU-Zeit in Anspruch, fast die gesamte Benutzerzeit, da es keine Systemaufrufe gab.

Systemzeit ist die Zeit, die die CPU damit verbringt, Kernel-Anweisungen bei Systemaufrufen auszuführen. Hier ist ein Beispiel:

$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
*/
Wir können sehen, dass das obige Beispiel mehr CPU verbraucht.


5. Systemkonstanten abrufen PHP bietet sehr nützliche Systemkonstanten, mit denen Sie die aktuelle Zeilennummer (LINE), Datei (FILE), Verzeichnis (DIR) und Funktionsnamen (FUNCTION) abrufen können ) ), Klassenname (CLASS), Methodenname (METHOD) und Namespace (NAMESPACE), ähnlich wie bei der C-Sprache.
Wir können davon ausgehen, dass diese Dinge hauptsächlich zum Debuggen verwendet werden, aber nicht unbedingt. Wir können beispielsweise ?FILE verwenden, wenn wir andere Dateien einbinden (natürlich können Sie auch DIR nach PHP 5.3 verwenden).

// 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;);
Im Folgenden wird LINE verwendet, um einige Debug-Informationen auszugeben, die Ihnen beim Debuggen des Programms helfen:


// 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 Viele Freunde verwenden md5(), um eindeutige Zahlen zu generieren, aber md5() weist mehrere Mängel auf: 1. Ungeordnet, was zu einer verringerten Sortierleistung in der Datenbank führt. 2. Zu lang und erfordert mehr Speicherplatz. Tatsächlich verfügt PHP über eine Funktion zum Generieren einer eindeutigen ID. Diese Funktion ist uniqid(). Das Folgende ist die Verwendung:

// generate unique string 
echo uniqid(); 
/* 输出
4bd67c947233e
*/ 
// generate another unique string 
echo uniqid(); 
/* 输出
4bd67c9472340
*/
Dieser Algorithmus wird basierend auf dem CPU-Zeitstempel generiert, sodass in einem ähnlichen Zeitraum die ersten paar Ziffern der ID gleich sind, was auch die erleichtert Sortierung von IDs. Wenn Sie Duplikate besser vermeiden möchten, können Sie vor der ID ein Präfix hinzufügen, z. B.:


// 前缀 
echo uniqid(‘foo_&#39;); 
/* 输出
foo_4bd67d6cd8b8f
*/ 
// 有更多的熵 
echo uniqid(”,true); 
/* 输出
4bd67d6cd8b926.12135106
*/ 
// 都有 
echo uniqid(‘bar_&#39;,true); 
/* 输出
bar_4bd67da367b650.43684647
*/

7. Serialisierung
PHP-Serialisierung Funktion ist möglich. Sie ist weit verbreitet und üblich. Wenn Sie Daten in einer Datenbank oder Datei speichern müssen, können Sie die Methoden serialize() und unserialize() in PHP verwenden, um eine Serialisierung und Deserialisierung zu erreichen >

Wie serialisiere ich in das JSON-Format? Keine Sorge, PHP hat dies bereits für Sie erledigt. Benutzer, die PHP 5.2 oder höher verwenden, können die Funktionen json_encode() und json_decode() verwenden, um JSON zu implementieren Format. Serialisierung, der Code lautet wie folgt:
// 一个复杂的数组 
$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功能,是不是都很实用呢?

Das obige ist der detaillierte Inhalt von8 wesentliche Funktionen für die PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn