Heim > Artikel > Backend-Entwicklung > 8 wesentliche Funktionen für die PHP-Entwicklung
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['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 */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['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 */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'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');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_'); /* 输出 foo_4bd67d6cd8b8f */ // 有更多的熵 echo uniqid(”,true); /* 输出 4bd67d6cd8b926.12135106 */ // 都有 echo uniqid(‘bar_',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 >
// 一个复杂的数组 $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功能,是不是都很实用呢?
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!