Heim  >  Artikel  >  Backend-Entwicklung  >  Funktionen – Hinweise zum PHP-Handbuch

Funktionen – Hinweise zum PHP-Handbuch

WBOY
WBOYOriginal
2016-08-08 09:29:19843Durchsuche

Benutzerdefinierte Funktion

Funktion muss vor dem Aufruf nicht definiert werden, es sei denn, sie ist bedingt definiert.

Alle Funktionen und Klassen in PHP haben einen globalen Geltungsbereich. PHP unterstützt keine Funktionsüberladung und es ist nicht möglich, deklarierte Funktionen aufzuheben oder neu zu definieren.

Ich habe es gezielt ausprobiert und festgestellt, dass die maximale Tiefe des PHP-Rekursionsstapels auf meinem Computer 100 beträgt.

Funktionsparameter

PHP unterstützt die Übergabe von Parametern nach Wert (Standard), die Übergabe von Parametern nach Referenz und Standardparameter. Argumentlisten variabler Länge werden ebenfalls unterstützt. PHP erlaubt die Verwendung von Arrays und speziellen Typen NULL als Standardparameter. Wenn Sie einer Funktion erlauben möchten, Parameterwerte zu ändern, müssen Sie Parameter als Referenz übergeben.

Achtung! Bei der Verwendung von Standardparametern müssen alle Standardparameter rechts von allen Nicht-Standardparametern platziert werden, andernfalls funktioniert die Funktion nicht wie erwartet.

PHP unterstützt eine variable Anzahl von Parameterlisten in benutzerdefinierten Funktionen. In PHP 5.6 und höher gibt es eine ...-Syntaximplementierung, die wie folgt geschrieben werden kann. Sie kann nicht getestet werden, da keine geeignete Umgebung vorhanden ist.

<code><?php 
function sum(...$numbers) {
	$acc = 0;
	foreach($numbers as $n) {
		$acc += $n;
	}
	return $acc;
}
echo sum(1, 2, 3, 4);</code>

Natürlich können variable Anzahlen an Parameterlisten auch in niedrigeren Versionen wie PHP 5.5 verwendet werden. Ermitteln Sie die Anzahl der Parameter, den Inhalt eines bestimmten Parameters und das Parameterarray über die Funktionen func_num_args(), func_get_arg() und gunc_get_args().

<code><?php 
function sum() {
	$acc = 0;
	foreach(func_get_args() as $n) {
		$acc += $n;
	}
	return $acc;
}
echo sum(1, 2, 3, 4);</code>

Rückgabewert

Eine Funktion kann nicht mehrere Werte zurückgeben, aber Sie können einen ähnlichen Effekt erzielen, indem Sie ein Array zurückgeben.

<code><?php 
function small_numbers() {
	return array(0, 1, 2);
}
list($zero, $one, $two) = small_numbers();
echo "$zero  $one  $two";</code>

Um eine Referenz von einer Funktion zurückzugeben, müssen Sie den Referenzoperator & sowohl bei der Deklaration der Funktion als auch beim Zuweisen des Rückgabewerts zu einer Variablen verwenden.

<code><?php 
function & return_reference() {
	return $someref;
}
$newref = & return_reference();</code>

Variablenfunktion

PHP unterstützt variable Funktionen. Das heißt, wenn nach einem Variablennamen Klammern stehen, sucht PHP nach einer Funktion mit demselben Namen wie der Wert der Variablen und versucht, diese auszuführen. Variablenfunktionen können zur Implementierung von Rückruffunktionen, Funktionstabellen usw. verwendet werden, obwohl ich diese noch nie verwendet habe.

Beim Aufruf statischer Methoden haben Funktionsaufrufe Vorrang vor statischen Eigenschaften.

Interne Funktionen

PHP verfügt über viele Standardfunktionen und -strukturen, und einige Funktionen müssen mit bestimmten PHP-Erweiterungsmodulen kompiliert werden.

Wenn der an die Funktion übergebene Parametertyp nicht mit dem tatsächlichen Typ übereinstimmt, ist der Rückgabewert der Funktion undefiniert. In diesem Fall gibt die Funktion normalerweise NULL zurück. Aber das ist nur eine Konvention und muss nicht so sein.

Anonyme Funktion

Anonyme Funktionen, auch Abschlüsse genannt, ermöglichen es Ihnen, vorübergehend eine Funktion ohne angegebenen Namen zu erstellen. Der Wert, der am häufigsten als Callback-Funktionsargument verwendet wird.

Das erste Beispielprogramm im Handbuch bezieht sich auf reguläre Ausdrücke, über die ich nicht viel weiß. Das zweite Beispielprogramm ist eine anonyme Funktionsvariablenzuweisung. Beachten Sie, dass am Ende der Definitionsanweisung der anonymen Funktionsvariablen ein Semikolon hinzugefügt werden sollte.

<code><?php 
$greet = function($name) {
	echo "Hello $name  ";
};
$greet("world");
$greet('PHP');</code>

Das dritte Beispielprogramm zum Erben von Variablen aus dem übergeordneten Bereich verstehe ich nicht, was schade ist. Das vierte Beispielprogramm zu Abschlüssen und Umfang wird mit tatsächlicher Praxis kombiniert. Schauen Sie sich das genauer an.

Dies ist eine grundlegende Warenkorbklasse, die die Funktion implementiert, eine bestimmte Anzahl von Produkten hinzuzufügen und den Gesamtpreis zu berechnen. Als Callback-Funktion wird ein Abschluss verwendet.

<code><?php 
class Cart {
	const PRICE_BUTTER = 1.00;
	const PRICE_MILK = 3.00;
	const PRICE_EGGS = 6.95;

	protected $products = array();

	public function add($product, $quantity) {
		$this->products[$product] = $quantity;
	}
	public function getQuantity($product) {
		return isset($this->products[$product]) ? 
			$this->products[$product] : FALSE;
	}
	public function getTotal($tax) {
		$total = 0.00;
		$callback = function($quantity, $product) use ($tax, &$total) {
			$pricePerItem = constant(__CLASS__ . "::PRICE_" . 
				strtoupper($product));
			$total += ($pricePerItem * $quantity) * ($tax + 1.0);
		};
		array_walk($this->products, $callback);
		return round($total, 2);
	}
}

$mycart = new Cart;
$mycart->add('butter', 1);
$mycart->add('milk', 3);
$mycart->add('eggs', 6);
echo $mycart->getTotal(0.05);</code>

Achtung! Achten Sie darauf, das Semikolon nicht am Ende der anonymen Funktionsanweisung stehen zu lassen!

(Volltext beendet)

Das Obige stellt die Funktionen vor – Hinweise zum PHP-Handbuch, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

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