Heim > Artikel > Backend-Entwicklung > 8 wesentliche PHP-Funktionen für die Entwicklung
Programmierer, die PHP-Entwicklung durchgeführt haben, sollten wissen, dass es in PHP viele integrierte Funktionen gibt. Ihre Beherrschung kann Ihnen dabei helfen, sich in der PHP-Entwicklung besser zurechtzufinden alles sehr praktisch und ich hoffe, dass alle PHP-Entwickler sie beherrschen können.
1. Übergeben Sie beliebig viele Funktionsparameter
Bei der .NET- oder JAVA-Programmierung ist die Anzahl der Funktionsparameter im Allgemeinen festgelegt, PHP ermöglicht jedoch die Verwendung einer beliebigen Anzahl von Parametern. Das folgende Beispiel zeigt Ihnen die Standardparameter einer PHP-Funktion:
3
4
|
// Funktion mit zwei Standardparametern
function foo( $arg1 = ”, $arg2 = ”) {
echo "arg1: $arg1 n";
echo "arg2: $arg2 n";
}
foo(‘hello’,’world’);
/* Ausgabe:
arg1: hallo
arg2: Welt
*/
foo();
/* Ausgabe:
arg1:
arg2:
*/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
//Ja, die Parameterliste ist leer
function foo() {
//Erhalten Sie das Array aller eingehenden Parameter
$args = func_get_args();
foreach ( $args as $k => ; $v ) {
echo "arg".( $k 1).": $v n“;
}
}
foo();
/* Es wird nichts ausgegeben */
foo(‘hello’);
/* Ausgabe
arg1: hallo
*/
foo('hello', 'world', 'again');
/* Ausgabe
arg1: hallo
arg2: Welt
arg3: schon wieder
*/
|
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 möglicherweise nicht, wofür es verwendet wird. Tatsächlich können glob() und scandir() zur Suche verwendet werden Für Dateien beachten Sie bitte die folgende Verwendung:
3
4
6 7
10
11
|
//Alle Dateien mit dem Suffix PHP abrufen
$files = glob (‘*.php’);
print_r( $files );
/* Ausgabe:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//PHP-Dateien und TXT-Dateien abrufen
$files = glob ('*.{php,txt}', GLOB_BRACE);
print_r( $files );
/* Ausgabe:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
[5] => test.txt
)
*/
|
1 2 3 4 5 6 7 8 9 10 |
$files = glob ('../images/a*.jpg');
print_r( $files );
/* Ausgabe:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$files = glob ('../images/a*.jpg');
// wendet die Funktion auf jedes Array-Element an
$files = array_map (' realpath code><code>', $files );
print_r( $files );
/* Ausgabe sieht so aus:
Array
(
[0] => C:wampwwwimagesapple.jpg
[1] => C:wampwwwimagesart.jpg
)
*/
|
3. Informationen zur Speichernutzung abrufen
Der Speicherrecyclingmechanismus von PHP ist bereits sehr leistungsfähig. Sie können auch PHP-Skripte verwenden, um die aktuelle Speichernutzung abzurufen, und die Funktion „memory_get_peak_usage()“ aufrufen, um den Spitzenspeicher abzurufen Verwendung. Der Referenzcode lautet wie folgt:
3 4
5
|
echo „Initial: „.memory_get_usage().“ Bytes n“;
/* Ausgabe
Anfänglich: 361400 Bytes
*/
//Speicher verwenden
for ( $i = 0; $i < 100000; $i ) { <🎜>
<🎜> $array []= md5( $i ); < 🎜>
<🎜> } <🎜>
<🎜> <🎜>
<🎜>//Die Hälfte des Speichers löschen <🎜>
<🎜>for ( $i = 0; $i < 100000; $i ) { <🎜>
<🎜> unset( $array [ $i ]) ; <🎜>
<🎜> } <🎜>
<🎜> <🎜>
<🎜>echo „Final: „.memory_get_usage().“ bytes n“; <🎜>
<🎜> /* druckt <🎜>
<🎜> Endgültig: 885912 Bytes <🎜>
<🎜> */ <🎜>
<🎜> <🎜>
<🎜>echo „Peak: „.memory_get_peak_usage().“ Bytes n“; <🎜>
<🎜> /* Spitzenwert ausgeben <🎜>
<🎜>Peak: 13687072 Bytes <🎜>
<🎜> */ <🎜>
<🎜>
|
<🎜>1<🎜> <🎜>2<🎜> <🎜>3<🎜> <🎜>4<🎜> <🎜>5<🎜> <🎜>6<🎜> <🎜>7<🎜> <🎜>8<🎜> <🎜>9<🎜> <🎜>10<🎜> <🎜>11<🎜> <🎜>12<🎜> <🎜>13<🎜> <🎜>14<🎜> <🎜>15<🎜> <🎜>16<🎜> <🎜>17<🎜> <🎜>18<🎜> <🎜>19<🎜> <🎜>20<🎜> <🎜>21<🎜> <🎜>22<🎜> <🎜>23<🎜> <🎜>24<🎜> |
<🎜>
<🎜>print_r( getrusage ()); <🎜>
<🎜> /* Ausgabe <🎜>
<🎜>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. Nachfolgend einige Erläuterungen:
Um zu sehen, wie viel CPU Ihr Skript verbraucht, müssen wir uns die Werte „Benutzermoduszeit“ und „Systemkernelzeit“ ansehen. 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.
3
4
|
<🎜>
<🎜>// 3 Sekunden lang schlafen (nicht beschäftigt) <🎜>
<🎜> sleep(3); <🎜>
<🎜> <🎜>
<🎜>$data = getrusage (); <🎜>
<🎜> echo “Benutzerzeit: „. <🎜>
<🎜> ( $data [ 'ru_utime.tv_sec' ] <🎜>
<🎜> $data [ 'ru_utime.tv_usec' ] / 1000000);</code ><🎜>
<🎜><code> echo “Systemzeit: „. <🎜>
<🎜> ( $data [ 'ru_stime.tv_sec' ] <🎜>
<🎜> $data [ 'ru_stime.tv_usec' ] / 1000000);</code ><🎜>
<🎜> <🎜>
<🎜><code>/* Ausgabe <🎜>
<🎜>Benutzerzeit: 0,011552 <🎜>
<🎜> Systemzeit: 0 <🎜>
<🎜> */ <🎜>
<🎜>
|
<🎜>1<🎜> <🎜>2<🎜> <🎜>3<🎜> <🎜>4<🎜> <🎜>5<🎜> <🎜>6<🎜> <🎜>7<🎜> <🎜>8<🎜> <🎜>9<🎜> <🎜>10<🎜> <🎜>11<🎜> <🎜>12<🎜> <🎜>13<🎜> <🎜>14<🎜> <🎜>15<🎜> <🎜>16<🎜> <🎜>17<🎜> |
<🎜>
<🎜>// Schleife 10 Millionen Mal (beschäftigt) <🎜>
<🎜> für ( $i =0; $i <10000000; $i ) { <🎜>
<🎜> <🎜>
<🎜>} <🎜>
<🎜> <🎜>
<🎜>$data = getrusage (); <🎜>
<🎜> echo “Benutzerzeit: „. <🎜>
<🎜> ( $data [ 'ru_utime.tv_sec' ] <🎜>
<🎜> $data [ 'ru_utime.tv_usec' ] / 1000000);</code ><🎜>
<🎜><code> echo “Systemzeit: „. <🎜>
<🎜> ( $data [ 'ru_stime.tv_sec' ] <🎜>
<🎜> $data [ 'ru_stime.tv_usec' ] / 1000000);</code ><🎜>
<🎜> <🎜>
<🎜><code>/* Ausgabe <🎜>
<🎜>Benutzerzeit: 1.424592 <🎜>
<🎜> Systemzeit: 0,004204 <🎜>
<🎜> */ <🎜>
<🎜>
|
Dies nahm etwa 14 Sekunden CPU-Zeit in Anspruch, wobei fast die gesamte Zeit davon Benutzerzeit war, da es keine Systemaufrufe gab.
Systemzeit ist die Zeit, die die CPU damit verbringt, Kernel-Anweisungen bei Systemaufrufen auszuführen. Hier ist ein Beispiel:
3 4 5 6
7
9 10
|
<🎜>
<🎜>$start = microtime(true); <🎜>
<🎜> // Rufen Sie Microtime etwa 3 Sekunden lang auf <🎜>
<🎜> while (microtime(true) – $start < 3) { Code><🎜>
<🎜> <🎜>
<🎜> |
<🎜>1<🎜> <🎜>2<🎜> <🎜>3<🎜> <🎜>4<🎜> <🎜>5<🎜> <🎜>6<🎜> <🎜>7<🎜> |
<🎜>
<🎜>// Dies ist relativ zum Pfad des geladenen Skripts <🎜>
<🎜> // Es kann zu Problemen kommen, wenn Skripte aus verschiedenen Verzeichnissen ausgeführt werden <🎜>
<🎜> require_once (‘config/database.php’); <🎜>
<🎜> <🎜>
<🎜>// Dies ist immer relativ zum Pfad dieser Datei <🎜>
<🎜> // egal woher es eingefügt wurde <🎜>
<🎜> require_once (dirname( __FILE__ ) . '/config/database.php') ; <🎜>
<🎜>
|
<🎜>1<🎜> <🎜>2<🎜> <🎜>3<🎜> <🎜>4<🎜> <🎜>5<🎜> <🎜>6<🎜> <🎜>7<🎜> <🎜>8<🎜> <🎜>9<🎜> <🎜>10<🎜> <🎜>11<🎜> <🎜>12<🎜> <🎜>13<🎜> <🎜>14<🎜> <🎜>15<🎜> <🎜>16<🎜> <🎜>17<🎜> |
<🎜>
<🎜>// etwas Code <🎜>
<🎜> // … <🎜>
<🎜>my_debug(“irgendeine Debug-Meldung”, __LINE__ ); <🎜>
<🎜> /* Ausgabe <🎜>
<🎜>Zeile 4: eine Debug-Meldung <🎜>
<🎜> */ <🎜>
<🎜> <🎜>
<🎜>// noch etwas Code <🎜>
<🎜> // … <🎜>
<🎜>my_debug(„eine weitere Debug-Nachricht“, __LINE__ ); <🎜>
<🎜> /* Ausgabe <🎜>
<🎜>Zeile 11: eine weitere Debug-Meldung <🎜>
<🎜> */ <🎜>
<🎜> <🎜>
<🎜>function my_debug( $msg , $line ) { <🎜>
<🎜> echo “Zeile $line : $msg< /code><code>n“; <🎜>
<🎜> } <🎜>
<🎜>
|
6. Generieren Sie eine eindeutige ID
Viele Freunde verwenden md5(), um eindeutige Zahlen zu generieren, aber md5() weist mehrere Mängel auf: 1. Unordnung, 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(). So verwenden Sie es:
3
4
6 7 8
|
// generiert eine eindeutige Zeichenfolge
echo uniqid();
/* Ausgabe
4bd67c947233e
*/
// eine weitere eindeutige Zeichenfolge generieren
echo uniqid();
/* Ausgabe
4bd67c9472340
*/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Präfix
echo uniqid(‘foo_’);
/* Ausgabe
foo_4bd67d6cd8b8f
*/
// Mehr Entropie
echo uniqid(”,true);
/* Ausgabe
4bd67d6cd8b926.12135106
*/
//Alle
echo uniqid(‘bar_’,true);
/* Ausgabe
bar_4bd67da367b650.43684647
*/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//Ein komplexes Array
$myvar = array (
‚Hallo‘,
42,
array (1,’two’),
‘Apfel’
);
//Serialisierung
$string = serialize( $myvar );
echo $string ;
/* Ausgabe
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";}
*/
//Deserialisierung
$newvar = unserialize( $string );
print_r( $newvar );
/* Ausgabe
Array
(
[0] => hallo
[1] => 42
[2] => Array
(
[0] => 1
[1] => zwei
)
[3] => Apfel
)
*/
|
Wie serialisiere ich 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 das JSON-Format zu serialisieren :
|
// ein komplexes Array
$myvar = array (
‚Hallo‘,
42,
array (1,’two’),
‘Apfel’
);
// in einen String konvertieren
$string = json_encode( $myvar );
echo $string ;
/* druckt
["hello",42,[1,"two"],"apple"]
*/
// Sie können die ursprüngliche Variable reproduzieren
$newvar = json_decode( $string );
print_r( $newvar );
/* druckt
Array
(
[0] => hallo
[1] => 42
[2] => Array
(
[0] => 1
[1] => zwei
)
[3] => Apfel
)
*/
|
8. String-Komprimierung
Wenn wir über Komprimierung sprechen, denken wir vielleicht an Dateikomprimierung. Tatsächlich können Zeichenfolgen auch komprimiert werden. PHP bietet die Funktionen ?gzcompress() und gzuncompress():
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$string =
„Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi,
sapien vel feugiat vestibulum, nulla dui pretium orci,
Non ultricies elit lacus quis ante
<code> sit amet, consectetur adipiscing elit.
Pretium ullamcorper urna quis iaculis.
sed turpis tempor luctus
<code> 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
<code> sed nunc
<code> Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales „;
$compressed = gzcompress( $string );
echo „Originalgröße:“ strlen ( $string )."n";
/* Originalgröße ausgeben
Originalgröße: 800
*/
echo „Komprimierte Größe:“ strlen ( $compressed )."n";
/* Gibt die komprimierte Größe aus
Komprimierte Größe: 418
*/
//Dekomprimieren
$original = gzuncompress( $compressed );
|