<code><code>
11. Ausnahmebehandlung
<code><code>Benutzer können Define verwenden Ausnahmebehandlungsklassen zur Erweiterung der in PHP integrierten Ausnahmebehandlungsklassen. Der folgende Code veranschaulicht, welche Eigenschaften und Methoden in der integrierten Ausnahmebehandlungsklasse in Unterklassen zugänglich und vererbbar sind. Anmerkung des Übersetzers: Der folgende Code dient nur zur Veranschaulichung der Struktur der integrierten Ausnahmebehandlungsklasse. Es handelt sich nicht um einen verwendbaren Code mit praktischer Bedeutung.
<code>class Exception{
protected $ message = 'Unbekannte Ausnahme'; //Ausnahmeinformationen
protected $code = 0; //Benutzerdefinierter Ausnahmecode
protected $file; //Der Dateiname, in dem die Ausnahme aufgetreten ist
protected $line ; // Die Codezeilennummer, in der die Ausnahme aufgetreten ist
function __construct($message = null, $code = 0);
final function getMessage(); >final function getCode( ); // Gibt den Ausnahmecode zurück
final function getFile(); // Gibt den Dateinamen zurück, in dem die Ausnahme aufgetreten ist
final function getLine(); wo die Ausnahme aufgetreten ist
final function getTrace(); // backtrace() array
final function getTraceAsString(); // getTrace()-Informationen in einen String formatiert
/* Überladbare Methode*/
function __toString(); // Ausgebbarer String
}
?><code>class Exception{
protected $message = 'Unknown exception'; // 异常信息
protected $code = 0; // 用户自定义异常代码
protected $file; // 发生异常的文件名
protected $line; // 发生异常的代码行号
function __construct($message = null, $code = 0);
final function getMessage(); // 返回异常信息
final function getCode(); // 返回异常代码
final function getFile(); // 返回发生异常的文件名
final function getLine(); // 返回发生异常的代码行号
final function getTrace(); // backtrace() 数组
final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
/* 可重载的方法 */
function __toString(); // 可输出的字符串
}
?>
Wenn Sie eine benutzerdefinierte Klasse verwenden, um die integrierte Ausnahmebehandlungsklasse zu erweitern und den Konstruktor neu zu definieren, wird empfohlen, gleichzeitig parent::__construct() aufzurufen, um zu überprüfen, ob alle Variablen vorhanden sind zugewiesene Werte. Wenn das Objekt eine Zeichenfolge ausgeben möchte, können Sie __toString() überladen und den Ausgabestil anpassen.
Erweiterte in PHP integrierte Ausnahmebehandlungsklasse
<code>// Passen Sie eine Ausnahmebehandlungsklasse an
class MyException erweitert Exception{ // Definieren Sie das Konstrukt neu Der Konverter macht Nachricht zu einer Eigenschaft, die angegeben werden muss
öffentliche Funktion __construct($message, $code = 0) {
// Angepasster Code // Stellen Sie sicher, dass alle Variablen korrekt zugewiesen sind
parent:: __construct($message, $code);
}
// Passen Sie den Stil der String-Ausgabe an
public function __toString() {
return __CLASS__ ": [ {$this-. >code}]: {$this->message}n";
}
public function customFunction() {
echo "Eine benutzerdefinierte Funktion für diese Art von Ausnahmen ";
}
}
<code>// 自定义一个异常处理类
class MyException extends Exception{ // 重定义构造器使 message 变为必须被指定的属性
public function __construct($message, $code = 0) {
// 自定义的代码 // 确保所有变量都被正确赋值
parent::__construct($message, $code);
}
// 自定义字符串输出的样式
public function __toString() {
return __CLASS__ . ": [{$this->code}]: {$this->message}n";
}
public function customFunction() {
echo "A Custom function for this type of exceptionn";
}
}
//创建一个用于测试异常处理机制的类
class TestException{
public $var;
const THROW_NONE = 0;
const THROW_CUSTOM = 1;
const THROW_DEFAULT = 2;
function __construct($avalue = self::THROW_NONE) {
switch ($avalue) {
case self::THROW_CUSTOM:
// 抛出自定义异常
throw new MyException('1 is an invalid parameter', 5);
break;
case self::THROW_DEFAULT:
// 抛出默认的异常
throw new Exception('2 isnt allowed as a parameter', 6);
break;
default:
// 没有异常的情况下,创建一个对象
$this->var = $avalue;
break;
}
}
}
// 例子 1
try {
$o = new TestException(TestException::THROW_CUSTOM);
} catch (MyException $e) { // 捕获异常
echo "Caught my exceptionn", $e;
$e->customFunction();
} catch (Exception $e) { // 被忽略
echo "Caught Default Exceptionn", $e;
}
// 执行后续代码
var_dump($o);
echo "nn";
// 例子 2
try {
$o = new TestException(TestException::THROW_DEFAULT);
} catch (MyException $e) { // 不能匹配异常的种类,被忽略
echo "Caught my exceptionn", $e;
$e->customFunction();
} catch (Exception $e) { // 捕获异常
echo "Caught Default Exceptionn", $e;
}
// 执行后续代码
var_dump($o);
echo "nn";
// 例子 3
try {
$o = new TestException(TestException::THROW_CUSTOM);
} catch (Exception $e) { // 捕获异常
echo "Default Exception caughtn", $e;
}
// 执行后续代码
var_dump($o);
echo "nn";
// 例子 4
try {
$o = new TestException();
} catch (Exception $e) { // 没有异常,被忽略
echo "Default Exception caughtn", $e;
}
// 执行后续代码
var_dump($o);
echo "nn";
?>//
Mit Generatoren können Sie Code in einen foreach-Block schreiben, um einen Datensatz zu durchlaufen, ohne ein Array im Speicher zu erstellen, was Sie tun würden Ihr Speicherlimit ist erreicht oder die Verarbeitung nimmt viel Zeit in Anspruch. Stattdessen können Sie eine Generatorfunktion schreiben, genau wie eine normale benutzerdefinierte Funktion, und statt einer normalen Funktion, die nur einmal zurückgibt, kann der Generator so oft wie nötig nachgeben, um Werte zu generieren, über die iteriert werden muss.
<code>function xrange($start, $limit, $step = 1) {
if ($start < $limit) {
if ($step <= 0) {
throw new LogicException('Step must be ve');
}
for ($i = $start; $i <= $limit; $i = $step) {
else {
if ($ Step & GT; = 0) {
Throw New LogiceXception ('Step Must be -ve');
}
for ($ i = $ start; $i > und xrange() führen zum selben
* Ausgabe unten. */
echo 'Einstellige ungerade Zahlen aus range(): ';
foreach (range(1, 9, 2) as $number) {
echo " $number ";
}
echo "n";
echo 'Einstellige ungerade Zahlen aus xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
?><code>function xrange($start, $limit, $step = 1) {
if ($start < $limit) {
if ($step <= 0) {
throw new LogicException('Step must be ve');
}
for ($i = $start; $i <= $limit; $i = $step) {
yield $i;
}
} else {
if ($step >= 0) {
throw new LogicException('Step must be -ve');
}
for ($i = $start; $i >= $limit; $i = $step) {
yield $i;
}
}
}
/* Note that both range() and xrange() result in the same
* output below. */
echo 'Single digit odd numbers from range(): ';
foreach (range(1, 9, 2) as $number) {
echo "$number ";
}
echo "n";
echo 'Single digit odd numbers from xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
?>
Single digit odd numbers from range(): 1 3 5 7 9 Single digit odd numbers from xrange(): 1 3 5 7 9
Vergleich von Generatoren mit Iterator-Objekten
Der Hauptvorteil von Generatoren ist, dass im Vergleich zur Implementierung einer Iterator-Klasse viel weniger Boilerplate-Code geschrieben werden muss. und der Code ist im Allgemeinen viel besser lesbar. Beispielsweise sind die folgenden Funktionen und Klassen gleichwertig:
<code>function getLinesFromFile($fileName) {
if (!$fileHandle = fopen($fileName, 'r')) {< br /> return;
while (false! == $ line = Fixeds ($ filehandle)) {
yield $ line;
fclose ($ fileHandle);
}
// versus...
class LineIterator implementiert Iterator {
protected $fileHandle;
protected $line;
protected $i ;
public function __construct($fileName ) {
if (!$this->fileHandle = fopen($fileName, 'r')) {
throw new RuntimeException('Datei konnte nicht geöffnet werden "' . $fileName . '"' );
Datei öffnen "' . br /> $this->line = fgets($this->fileHandle);
$this->i = 0;
} öffentliche Funktion valid() {
// return false !== $this->line;
}
public function current() {
return $this- >line;
}
public function key() {
$this->line = fgets($this->fileHandle);
$this->i ;
}
}
öffentliche Funktion __destruct () {
🎜>
<code>function getLinesFromFile($fileName) {
if (!$fileHandle = fopen($fileName, 'r')) {
return;
}
while (false !== $line = fgets($fileHandle)) {
yield $line;
}
fclose($fileHandle);
}
// versus...
class LineIterator implements Iterator {
protected $fileHandle;
protected $line;
protected $i;
public function __construct($fileName) {
if (!$this->fileHandle = fopen($fileName, 'r')) {
throw new RuntimeException('Couldn't open file "' . $fileName . '"');
}
}
public function rewind() {
fseek($this->fileHandle, 0);
$this->line = fgets($this->fileHandle);
$this->i = 0;
}
public function valid() {
return false !== $this->line;
}
public function current() {
return $this->line;
}
public function key() {
return $this->i;
}
public function next() {
if (false !== $this->line) {
$this->line = fgets($this->fileHandle);
$this->i ;
}
}
public function __destruct() {
fclose($this->fileHandle);
}
}
?>13. Zitat
<code>$a =& $b; //Das bedeutet <code>$a =& $b; //这意味着 $a 和 $b 指向了同一个变量。$a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者· //相反,而是 $a 和 $b 指向了同一个地方。
?>
und $b
sind hier genau gleich, was bei $a
zeigt auf$b
oder · // Stattdessen zeigt es auf$a
und$b
zeigt auf die gleiche Stelle.
<code>
wenn Arrays mit Referenzen werden kopiert und ihre Werte werden nicht dereferenziert. Das Gleiche gilt für die Übergabe von Array-Werten an Funktionen. Wenn eine undefinierte Variable per Referenz zugewiesen, per Referenz übergeben oder per Referenz zurückgegeben wird, wird die Variable automatisch erstellt.
function foo(&$var) { }
foo ($a); // $a wird „erstellt“ und null zugewiesen
$b = array();
foo( $b['b']);var_dump(array_key_exists('b', $b)); // bool(true)
$c = new StdClass;
<code>$bar =& new fooclass();
$foo =& find_var($bar);
?>
?>
Gleiche Syntax Kann kann in Funktionen verwendet werden, die Referenzen zurückgeben, und im new-Operator (PHP 4.0.4 und höher):
<code>
$bar =& new fooclass();
$foo =& find_var($ bar);< br />?><code>$var1 = "Example variable";
$var2 = "";
function global_references($use_globals){
global $var1, $var2;
if (!$use_globals) {
$var2 =& $var1; // visible only inside the function
} else {
$GLOBALS["var2"] =& $var1; // visible also in global context
}
}
global_references(false);
echo "var2 is set to '$var2'n"; // var2 is set to ''
global_references(true);
echo "var2 is set to '$var2'n"; // var2 is set to 'Example variable'
?>
Wenn a Wird eine Referenz einer als global deklarierten Variablen innerhalb einer Funktion zugewiesen, ist die Referenz nur innerhalb der Funktion sichtbar. Dies kann durch die Verwendung des Arrays $GLOBALS vermieden werden. Referenzieren Sie globale Variablen innerhalb einer Funktion:
<code>
$var1 = "Beispielvariable";
$var2 = "";
function global_references($use_globals){
global $var1, $var2;
if (!$use_globals) {
$var2 =& $var1; // nur innerhalb der Funktion sichtbar
} else {
$GLOBALS["var2"] =& $ var1; // auch im globalen Kontext sichtbar
echo "var2 ist auf '$var2'n" gesetzt; // var2 ist gesetzt to ''
global_references(true);
echo "var2 is set to '$var2'n"; // var2 is set to 'Example variable'
?>
global $var;
behandeln als Es ist die Abkürzung von $var =& $GLOBALS['var']; . Das Zuweisen anderer Referenzen zu
$varändert also nur die Referenz der lokalen Variablen.
Wenn einer Variablen mit einer Referenz in der foreach-Anweisung ein Wert zugewiesen wird , es ist Das referenzierte Objekt wird ebenfalls geändert.
$ref = 0;
$row =& $ ref;<code>function foo(&$var){ echo $ref; // 3 – letztes Element des iterierten Arrays ?>Die zweite Sache, die Referenzen bewirken, ist die Übergabe von Variablen als Referenz. Dies wird erreicht, indem eine lokale Variable innerhalb der Funktion erstellt wird und diese Variable auf denselben Inhalt im aufrufenden Bereich verweist. Zum Beispiel:
<code> Funktion foo(&$var){
ergibt aus $a <code>function foo(&$var){ auf und $a verweist auf den gleichen Inhalt. Eine ausführlichere Erklärung finden Sie unter „Übergabe als Referenz“. Die dritte Sache, die eine Referenz bewirkt, ist die Referenzrückgabe. Referenzen sind keine Hinweise. Sie können eine Variable als Referenz an eine Funktion übergeben, sodass die Funktion den Wert ihres Arguments ändern kann. <code>function foo( &$var){ Variablen wie foo($a); Neue Anweisungen wie foo(new foobar()); Von Funktionen zurückgegebene Referenzen Jeder andere Ausdruck kann nicht als Referenz übergeben werden und das Ergebnis ist undefiniert. <code><code>function bar(){ // Note the missing & Referenzrückgabe wird verwendet, wenn Sie eine Funktion verwenden möchten, um herauszufinden, an welche Variable die Referenz gebunden werden soll. . Verwenden Sie keine Return-Referenzen, um die Leistung zu steigern. Die Engine ist intelligent genug, um sie selbst zu optimieren. Geben Sie Referenzen nur zurück, wenn ein triftiger technischer Grund vorliegt! Um eine Referenz zurückzugeben, verwenden Sie diese Syntax: <code><code>class foo { In diesem Beispiel gibt die Funktion getValue den zurück Objekteigenschaften werden zugewiesen und nicht kopiert, als ob keine Referenzsyntax verwendet worden wäre. Anders als bei der Parameterübergabe muss hier das kaufmännische Und-Zeichen an beiden Stellen verwendet werden – es zeigt an, dass eine Referenz zurückgegeben wird, keine übliche Kopie, und zeigt auch an, dass $myValue als Referenz und nicht als übliche Zuweisung gebunden ist. Wenn Sie eine Referenz aufheben, brechen Sie lediglich die Bindung zwischen dem Variablennamen und dem Inhalt der Variablen auf. Dies bedeutet nicht, dass die Variableninhalte zerstört werden. <code><span><?php<br />$a = 1;<br />$b =& $a;<br />unset($a);<br />?></span><code> wird nicht deaktiviert $b, nur $a globale Referenz: Bei der Deklaration einer Variablen mit globaler $var wird tatsächlich eine Referenz auf die globale Variable hergestellt. Mit anderen Worten, es ist dasselbe wie: <code><span><?php<br />$var =& $GLOBALS["var"]; //这意味着,例如,unset <var><var>$var</var></var> 不会 unset 全局变量。<br />?></span> $this: In einer Methode eines Objekts, ist immer eine Referenz auf das Objekt, das es aufruft. 14. Vordefinierte Variablen Superglobale Variablen sind in allen Bereichen integriert. in Variablen, die in PHP immer verfügbar sind Viele vordefinierte Variablen in PHP sind „superglobal“, was bedeutet, dass sie im gesamten Umfang eines Skripts verfügbar sind. Auf sie kann innerhalb einer Funktion oder Methode zugegriffen werden, ohne dass die globale Variable $variable ausgeführt werden muss. Diese superglobalen Variablen sind: $GLOBALS; $_GET; $_COOKIE;$_SESSION;$_REQUEST;$_ENV
Standardmäßig sind alle superglobalen Variablen verfügbar. Allerdings gibt es einige Richtlinien, die diese Verfügbarkeit beeinflussen.
$GLOBALS – bezieht sich auf alle im globalen Bereich verfügbaren Variablen, ein globales kombiniertes Array, das alle Variablen enthält. Der Name der Variablen ist der Schlüssel des Arrays.
<code><span><?php<br />function test() {<br />$foo = "local variable";<br />echo '$foo in global scope: ' . $GLOBALS["foo"] . "n";//$foo in global scope: Example content<br />echo '$foo in current scope: ' . $foo . "n";//$foo in current scope: local variable<br />}<br />$foo = "Example content";<br />test();<br />?></span> „Superglobal“ wird auch als automatisierte globale Variable bezeichnet. Dies bedeutet, dass es in allen Bereichen des Skripts verfügbar ist. Es ist nicht erforderlich, die globale Variable $ in einer Funktion oder Methode zu verwenden, um darauf zuzugreifen. Im Gegensatz zu allen anderen superglobalen Variablen ist $_SERVER Ist ein Array, das Informationen wie Header-Informationen (Header), Pfad (Pfad) und Skriptspeicherorte (Skriptspeicherorte) enthält. Die Elemente in diesem Array werden durch dargestellt
Erstellung eines Webservers. Möglicherweise können Sie die folgenden Elemente in $_SERVER finden oder auch nicht. Aufzählung: 'PHP_SELF': die Datei des aktuellen Name des ausführenden Skripts, bezogen auf das Stammverzeichnis des Dokuments. Verwenden Sie beispielsweise $_SERVER['PHP_SELF'] erhält /test.php/foo.bar. 'SERVER_ADDR': wo die aktuell läuft Das Skript befindet sich in der IP-Adresse des Servers. 'SERVER_NAME': wo der aktuell läuft Das Skript befindet sich Der Hostname des Servers. Wenn das Skript auf einem virtuellen Host ausgeführt wird, wird der Name durch den für diesen virtuellen Host festgelegten Wert bestimmt. 'SERVER_PROTOCOL': Kommunizieren Sie, wenn Sie eine anfordern Seite Der Name und die Version des Protokolls. Beispiel: „HTTP/1.0“. 'REQUEST_METHOD': wird für den Zugriff auf verwendet Seitenanforderungsmethode, zum Beispiel „GET“, „HEAD“, „POST“, „PUT“. 'REQUEST_TIME': Anfrage Der Zeitstempel, als es gestartet wurde. Verfügbar seit PHP 5.1.0. 'QUERY_STRING': Abfragezeichenfolge (String) , falls vorhanden, über welche Seite der Zugriff erfolgt. 'HTTP_HOST': in der aktuellen Anfrage Header Host: Der Inhalt des Elements, falls vorhanden. 'HTTP_REFERER': leitet den Benutzeragenten an die Adresse der vorherigen Seite der aktuellen Seite (falls vorhanden). Wird durch die Benutzeragenteneinstellungen bestimmt. Nicht alle Benutzeragenten legen dieses Element fest, und einige bieten auch die Funktion zum Ändern von HTTP_REFERER. Kurz gesagt, der Wert ist nicht vertrauenswürdig. 'HTTP_USER_AGENT': in der aktuellen Anfrage Header User-Agent: Der Inhalt des Elements, falls vorhanden. Diese Zeichenfolge gibt Informationen über den Benutzeragenten an, der auf diese Seite zugreift. 'REMOTE_ADDR': Durchsuchen Sie die aktuelle Seite Die IP-Adresse des Benutzers. 'REMOTE_HOST': Der Hostname des Benutzers, der die aktuelle Seite durchsucht. Die umgekehrte DNS-Auflösung hängt nicht von der REMOTE_ADDR des Benutzers ab. 'SERVER_PORT': Wird vom Web verwendet Server-Port. Der Standardwert ist „80“. Bei Verwendung einer sicheren SSL-Verbindung ist dieser Wert der vom Benutzer festgelegte HTTP-Port. $_GET: Array von Variablen, die über URL-Parameter an das aktuelle Skript übergeben werden. GET wird über urldecode() übergeben. $_POST: Variablen, die über die HTTP-POST-Methode an das aktuelle Skript übergeben werden Array. $_FILES: Ein Array von Elementen, die über HTTP POST in das aktuelle Skript hochgeladen wurden. $_REQUEST – HTTP-Anforderungsvariable, wenn sie im Befehlszeilenmodus ausgeführt wird, Enthält keine argv- und argc-Informationen; sie sind im Array $_SERVER vorhanden. Da die Variablen in $_REQUEST über die Eingabemechanismen GET, POST und COOKIE an die Skriptdatei übergeben werden, können sie von Remote-Benutzern manipuliert werden und sind nicht vertrauenswürdig . Die Elemente dieses Arrays und ihre Reihenfolge hängen von der Konfiguration der Variables_order-Direktive von PHP ab.
$_SESSION: Array von SESSION-Variablen, die im aktuellen Skript verfügbar sind. move_uploaded_file() – Verschieben Sie die hochgeladene Datei an einen neuen Speicherort; import_request_variables() – GET/POST/Cookie-Variablen in den globalen Bereich importieren; session_start() – eine neue Sitzung starten oder eine vorhandene Sitzung wiederverwenden; $_ENV: Ein Array von Variablen, die über die Umgebung an das aktuelle Skript übergeben werden. Diese Variablen werden aus der Laufzeitumgebung des PHP-Parsers in den globalen Namespace von PHP importiert. Viele werden von Shells bereitgestellt, die die Ausführung von PHP unterstützen, und auf verschiedenen Systemen werden wahrscheinlich unterschiedliche Arten von Shells ausgeführt, sodass eine definitive Liste nicht möglich ist. Bitte überprüfen Sie Ihre Shell-Dokumentation auf eine Liste der definierten Umgebungsvariablen. Andere Umgebungsvariablen umfassen CGI-Variablen, unabhängig davon, ob PHP als Servermodul oder als CGI-Prozessor ausgeführt wird.
$_COOKIE: Variable, die über das HTTP-Cookies-Array an das aktuelle Skript übergeben wird. setcookie() – Sende ein Cookie $php_errormsg – die vorherige Fehlermeldung; die Variable $php_errormsg enthält die neueste von PHP generierte Fehlermeldung . Diese Variable ist nur in dem Bereich verfügbar, in dem der Fehler aufgetreten ist, und erfordert die Aktivierung des Konfigurationselements track_errors (standardmäßig ist es deaktiviert). Wenn der Benutzer einen Fehlerhandler definiert (set_error_handler()) und <code>FALSE zurückgibt, wird $php_errormsg gesetzt. <code><code>@strpos(); $HTTP_RAW_POST_DATA – Native POST-Daten. $HTTP_RAW_POST_DATA Enthält die von POST übermittelten Rohdaten. Siehe Always_populate_raw_post_data. Im Allgemeinen verwenden Sie php://input anstelle von $HTTP_RAW_POST_DATA. $http_response_header – HTTP-Antwortheader: $ Das Array http_response_header ähnelt der Funktion get_headers(). Bei Verwendung eines HTTP-Wrappers wird $http_response_header mit HTTP-Antwortheadern gefüllt. $http_response_header wird im lokalen Bereich erstellt. <code><span><?php<br />function get_contents() {<br /> file_get_contents("http://example.com");<br /> var_dump($http_response_header);<br />}<br />get_contents();<br />var_dump($http_response_header);<br />?></span><code> $argc – Anzahl der an das Skript übergebenen Argumente: Enthält die Anzahl der an das aktuelle Skript übergebenen Argumente, wenn es über die Befehlszeile ausgeführt wird. Der Dateiname des Skripts wird immer als Argument an das aktuelle Skript übergeben, daher ist der Mindestwert von $argc 1 $argv – Array von Argumenten, die an das Skript übergeben werden: Ein Array mit den Argumenten, die an das aktuelle Skript übergeben werden, wenn es über die Befehlszeile ausgeführt wird. Der erste Parameter ist immer der Dateiname des aktuellen Skripts, also ist $argv[0] 15. Vordefinierte Ausnahmen
Exception ist die Basisklasse für alle Ausnahmen. Klassenzusammenfassung:
Ausnahme { /* Attributes*/ protectedstring$message protectedint$code protectedstring$file protectedint$line /* method*/ <code>$message<code>$code public__construct ([ string<code>$previous = "" [, int<code>NULL = 0 [, Exception = finalpublicstringgetMessage (void) finalpublicExceptiongetPrevious (void) finalpublicintgetCode (void) finalpublicstringgetFile ( void ) finalpublicintgetLine ( void ) finalpublicarraygetTrace ( void ) finalpublic stringgetTraceAsString ( void ) publicstring__toString ( void ) finalprivatevoid__clone ( void )} Attribute: Nachricht: Ausnahmemeldungscode: Ausnahmedatei: Dateiname, in der die Ausnahme ausgelöst wird; die Zeilennummer der Datei
Exception::__construct – Ausnahmekonstruktor Parameter: message: Der Inhalt der ausgelösten Ausnahmemeldung. Code: Ausnahmecode. previous: Die vorherige Ausnahme in der Ausnahmekette.
Exception::getMessage – Inhalt der Ausnahmemeldung abrufen Parameter: Diese Funktion hat keine Parameter.
Exception::getPrevious – Gibt die vorherige Ausnahme in der Ausnahmekette zurück 参数:Exception::getPrevious — 返回异常链中的前一个异常。追踪异常,并循环打印。
<code><span><?php<br />class MyCustomException extends Exception {}<br />function doStuff() {<br /> try {<br /> throw new InvalidArgumentException("You are doing it wrong!", 112);<br /> } catch(Exception $e) {<br /> throw new MyCustomException("Something happend", 911, $e);<br /> }<br />}<br />try {<br /> doStuff();<br /> } catch(Exception $e) {<br /> do {<br /> printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e- >getCode(), get_class($e));<br> } while($e = $e->getPrevious());<br> }<br>?></span> 以上例程的输出类似于: Exception::getCode — 获取异常代码 Exception::getFile — 获取发生异常的程序文件名称 Exception::getLine — 获取发生异常的代码在文件中的行号 Exception::getTrace — 获取异常追踪信息 Exception::getTraceAsString — 获取字符串类型的异常追踪信息 Exception::__toString — 将异常对象转换为字符串 Exception::__clone — 异常克隆 ErrorException::__construct — 异常构造函数 ErrorException::getSeverity — 获取异常的严重程度 <code><span><?php<br />try {<br /> throw new ErrorException("Exception message", 0, 75);<br />} catch(ErrorException $e) {<br /> echo "This exception severity is: " . $e->getSeverity();<br>}<br>?></span> 16.预定义接口 Traversable(遍历)接口: 检测一个类是否可以使用 foreach 进行遍历的接口。无法被单独实现的基本抽象接口。相反它必须由 IteratorAggregate 或 Iterator 接口实现。实现此接口的内建类可以使用 foreach 进行遍历而无需实现 IteratorAggregate 或 Iterator 接口。这是一个无法在 PHP 脚本中实现的内部引擎接口。IteratorAggregate 或 Iterator 接口可以用来代替它。 Traversable { } 这个接口没有任何方法,它的作用仅仅是作为所有可遍历类的基本接口。 Iterator(迭代器)接口: 可在内部迭代自己的外部迭代器或类的接口。 IteratorextendsTraversable { /* 方法 */ abstractpublicmixedcurrent ( void ) abstractpublicscalarkey ( void ) abstractpublicvoidnext ( void ) abstractpublicvoidrewind ( void ) abstractpublicbooleanvalid ( void ) Iterator::current — 返回当前元素:没有参数,可返回任何类型。 Iterator::key — 返回当前元素的键:没有参数,成功返回标量,失败则返回null。 Iterator::next — 向前移动到下一个元素:没有参数,任何返回都将被忽略。此方法在 foreach 循环之后被调用。 Iterator::rewind — 返回到迭代器的第一个元素:当开始一个 foreach 循环时,这是第一个被调用的方法。它将不会在 foreach 循环之后被调用。没有参数,任何返回都将被忽略。 Iterator::valid — 检查当前位置是否有效:此方法在 Iterator::rewind() 和 Iterator::next() 方法之后被调用以此用来检查当前位置是否有效。没有参数,返回将被转换为布尔型。成功时返回 <code>TRUE, 或者在失败时返回 <code>FALSE。 IteratorAggregate::getIterator — 获取一个外部迭代器:没有参数,实现了 Iterator 或 Traversable 接口的类的一个实例。 ArrayAccess(数组式访问)接口: 提供像访问数组一样访问对象的能力的接口。 ArrayAccess { /* 方法 */ abstractpublicbooleanoffsetExists ( mixed<code>$offset ) abstractpublicmixedoffsetGet ( mixed<code>$offset ) abstractpublicvoidoffsetSet ( mixed<code>$offset , mixed<code>$value ) abstractpublicvoidoffsetUnset ( mixed<code>$offset ) ArrayAccess::offsetExists — 检查一个偏移位置是否存在:对一个实现了 ArrayAccess 接口的对象使用 isset() 或 empty() 时,此方法将执行。当使用 empty() 并且仅当 ArrayAccess::offsetExists() 返回 <code>TRUE 时,ArrayAccess::offsetGet() 将被调用以检查是为否空。参数:offset 需要检查的偏移位置。成功时返回 <code>TRUE, 或者在失败时返回 <code>FALSE。如果一个非布尔型返回值被返回,将被转换为布尔型。 <code><span><?php<br />class obj implements arrayaccess {<br /> public function offsetSet($offset, $value) {<br /> var_dump(__METHOD__);<br />}<br />public function offsetExists($var) {<br /> var_dump(__METHOD__);<br /> if ($var == "foobar") {<br /> return true;<br /> }<br /> return false;<br />}<br />public function offsetUnset($var) {<br /> var_dump(__METHOD__);<br /> }<br />public function offsetGet($var) {<br /> var_dump(__METHOD__);<br /> return "value";<br /> }<br />}<br />$obj = new obj;<br />echo "Runs obj::offsetExists()\n";<br />var_dump(isset($obj["foobar"]));<br />echo "\nRuns obj::offsetExists() and obj::offsetGet()\n";<br />var_dump(empty($obj["foobar"]));<br />echo "\nRuns obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get\n";<br />var_dump(empty($obj["foobaz"]));<br />?></span> 以上例程的输出类似于: ArrayAccess::offsetGet — 获取一个偏移位置的值:当检查一个偏移位置是否为 empty() 时,此方法被执行。 ArrayAccess::offsetSet – Legen Sie den Wert einer Offset-Position fest: Parameter: offset Die festzulegende Offset-Position. Wert Der Wert, der festgelegt werden muss. Kein Rückgabewert. Wenn kein anderer Wert verfügbar ist, wird der Parameter <code>offset auf <code>NULL。 gesetzt ArrayAccess::offsetUnset – Setzt den Wert einer Offset-Position zurück: Diese Methode wird nicht aufgerufen, wenn (unset) für die Typkonvertierung verwendet wird. Serialisierungsschnittstelle: Serializable::serialize – String-Darstellung des Objekts. Diese Methode fungiert als Objektdestruktor. Nach dieser Methode wird die Methode __destruct() nicht aufgerufen. Diese Funktion hat keine Parameter und gibt eine Zeichenfolgendarstellung des Objekts oder <code>NULL zurück. Serializable::unserialize – Objekt erstellen. Diese Methode übernimmt die Rolle des Objektkonstruktors. Nach dieser Methode wird __construct() nicht aufgerufen. Parameter: String-Darstellung des serialisierten Objekts. Closure::__construct – Konstruktor, der verwendet wird, um die Instanziierung zu verhindern. Diese Methode wird nur verwendet, um die Instanziierung eines Objekts der Closure-Klasse zu deaktivieren. Die Erstellungsmethode von Objekten dieser Klasse ist auf der Seite „Anonyme Funktionen“ beschrieben. Diese Funktion hat keine Parameter und keinen Rückgabewert. Closure::bind – Kopieren Sie einen Abschluss und binden Sie das angegebene $this-Objekt an den Klassenbereich. Diese Methode ist eine statische Version von Closure::bindTo(). <code><code>class A { Closure::bindTo – Kopieren Sie das aktuelle Abschlussobjekt und binden Sie das angegebene $this-Objekt und den angegebenen Klassenbereich. Erstellen Sie eine anonyme Funktion und geben Sie sie zurück, die denselben Funktionskörper wie das aktuelle Objekt hat und dieselben Variablen bindet, aber verschiedene Objekte oder einen neuen Klassenbereich binden kann. Das „gebundene Objekt“ bestimmt den Wert von $this<code>newscope im Funktionskörper, und der „Klassenbereich“ stellt einen Typ dar und bestimmt, welche privaten und geschützten Methoden in dieser anonymen Funktion aufgerufen werden können. Mit anderen Worten, die Methoden, die $this zu diesem Zeitpunkt aufrufen kann, sind dieselben wie die Mitgliedsfunktionen der Klasse <code>newthis. Statische Abschlüsse können keine gebundenen Objekte haben (der Wert des Parameters <code>NULL sollte auf gesetzt sein), aber ihr Klassenbereich kann dennoch mit der Methode bubdTo geändert werden. Wenn Sie nur eine anonyme Funktion kopieren möchten, können Sie stattdessen das Klonen verwenden. <code><code>class A { Setzen Sie den Socket Die Kontextoption ist für alle Wrapper-Protokolle verfügbar, die auf Sockets funktionieren, wie tcp, http und ftp. <code><span><?php<br />// connect to the internet using the '192.168.0.100' IP<br />$opts = array(<br /> 'socket' => array(<br> 'bindto' => '192.168.0.100:0',<br> ),<br>);<br>// connect to the internet using the '192.168.0.100' IP and port '7000'<br>$opts = array(<br> 'socket' => array(<br> 'bindto' => '192.168.0.100:7000',<br> ),<br>);<br>// connect to the internet using port '7000'<br>$opts = array(<br> 'socket' => array(<br> 'bindto' => '0:7000',<br> ),<br>);<br>// create the context...<br>$context = stream_context_create($opts);<br>// ...and use it to fetch the data<br>echo file_get_contents('http://www.example.com', false, $context);<br>?></span><code> HTTP-Kontextoptionen – Eine Liste von Optionen für den HTTP-Kontext. Kontextoptionen für die Transportprotokolle http:// und https:// FTP-Kontextoptionen – Liste der FTP-Kontextoptionen SSL-Kontextoptionen – Liste der SSL-Kontextoptionen. ssl:// und tls:// Liste der Transportprotokoll-Kontextoptionen. Optionen: Viele. CURL-Kontextoptionen – Liste der CURL-Kontextoptionen. CURL-Kontextoptionen sind verfügbar, wenn die CURL-Erweiterung kompiliert wird (über die Konfigurationsoption --with-curlwrappers). Optional: <code><span><?php<br />$postdata = http_build_query(<br /> array(<br /> 'var1' => 'some content',<br> 'var2' => 'doh'<br> )<br>);<br>$opts = array('http' =><br> array(<br> 'method' => 'POST',<br> 'header' => 'Content-type: application/x-www-form-urlencoded',<br> 'content' => $postdata<br> )<br>);<br>$context = stream_context_create($opts);<br>$result = file_get_contents('http://example.com/submit.php', false, $context);<br>?></span> Phar-Kontextoptionen – Liste der Phar-Kontextoptionen. phar:// Kontextoptionen für den Wrapper. Optional: <code>compressint Eine der Phar-Komprimierungskonstanten. <code>metadatagemischte Phar-Metadaten. Siehe Phar::setMetadata(). Kontextparameter – Liste der Kontextparameter. Diese Parameter (Parameter) können auf den von der Funktion stream_context_set_params() zurückgegebenen Kontext gesetzt werden. Parameter: <code>notificationcallable Wenn ein Ereignis in einem Stream auftritt, wird das Callable aufgerufen. Datei :// – Greifen Sie auf das lokale Dateisystem zu. Dateisystem ist das von PHP verwendete Standard-Wrapper-Protokoll und macht das lokale Dateisystem verfügbar. Wenn ein relativer Pfad angegeben wird (ein Pfad, der nicht mit /, , \ oder einem Windows-Laufwerksbuchstaben beginnt), basiert der angegebene Pfad auf dem aktuellen Arbeitsverzeichnis. In vielen Fällen ist dies das Verzeichnis, in dem sich das Skript befindet, sofern es nicht geändert wurde. Bei Verwendung der CLI ist das Verzeichnis standardmäßig das Verzeichnis, in dem das Skript aufgerufen wird. In bestimmten Funktionen, wie fopen() und file_get_contents(), wird optional auch nach include_path gesucht ein relativer Pfad. http:// -- https:// – Greifen Sie auf die HTTP(s)-URL zu. Ermöglicht den schreibgeschützten Zugriff auf eine Datei oder Ressource über die HTTP 1.0-GET-Methode. HTTP-Anfragen werden von einem Host:-Header begleitet, um die Kompatibilität mit domänennamenbasierten virtuellen Hosts zu gewährleisten. Wenn die Zeichenfolge „user_agent“ in Ihrer php.ini-Datei oder Ihrem Byte-Stream-Kontext konfiguriert ist, wird sie auch in die Anfrage einbezogen. Der Datenstrom ermöglicht das Lesen des Körpers der Ressource, und die Header werden in der Variablen $http_response_header gespeichert. Wenn Sie wissen möchten, von welcher URL die Dokumentressource stammt (nach der Verarbeitung aller Weiterleitungen), müssen Sie die Reihe der zurückgegebenen Antwortheader verarbeiten durch den Datenfluss (Antwort-Header). Attribute Unterstützt Lesen zulassen Ja Unlink() unterstützen Nein php:// – Greifen Sie auf verschiedene Eingabe-/Ausgabeströme (E/A-Ströme) zu. PHP bietet eine Reihe verschiedener Eingabe-/Ausgabeströme (IO), die den Zugriff auf die Eingabe- und Ausgabeströme von PHP, Standard-Eingabe-, Ausgabe- und Fehlerdeskriptoren, speicherinterne, festplattengestützte temporäre Dateiströme und Filter ermöglichen, die auf andere Datenströme angewendet werden können Lese-/Schreib-Dateiressourcen. php://stdin, php://stdout und php://stderr ermöglichen den direkten Zugriff auf die entsprechenden Eingabe- oder Ausgabeströme des PHP-Prozesses. Der Datenstrom verweist auf den kopierten Dateideskriptor. Wenn Sie also php://stdin öffnen und dann schließen, wird nur die Kopie geschlossen und das tatsächlich referenzierte <code>STDIN ist davon nicht betroffen. Beachten Sie, dass das Verhalten von PHP in diesem Bereich bis PHP 5.2.1 fehlerhaft war. Es wird empfohlen, einfach die Konstanten <code>STDIN, <code>STDOUT und <code>STDERR zu verwenden, anstatt diese Wrapper manuell zu öffnen. php://stdin ist schreibgeschützt, php://stdout und php://stderr wird nur geschrieben. php://input Ist ein schreibgeschützter Stream, der Zugriff auf die angeforderten Rohdaten bietet. Bei POST-Anfragen ist es besser, php://input anstelle von $HTTP_RAW_POST_DATA zu verwenden, da es nicht auf das spezifische ankommt php.ini Befehl. Darüber hinaus wird in diesem Fall $HTTP_RAW_POST_DATA standardmäßig nicht ausgefüllt, was möglicherweise weniger Speicher erfordert als die Aktivierung von Always_populate_raw_post_data. enctype="multipart/form-data" Wenn php://input ungültig ist. php://output ist ein schreibgeschützter Datenstrom, der es Ihnen ermöglicht, auf die gleiche Weise wie Drucken und Echo in den Ausgabepuffer zu schreiben. php://fd Ermöglicht den direkten Zugriff auf den angegebenen Dateideskriptor. Beispielsweise bezieht sich php://fd/3 auf den Dateideskriptor 3. php://memory Und php://temp ist ein Datei-Wrapper-ähnlicher Datenstrom, der das Lesen und Schreiben temporärer Daten ermöglicht. Der einzige Unterschied zwischen den beiden besteht darin, dass php://memory Daten immer im Speicher speichert, während php://temp Daten speichert, nachdem die Speichermenge einen vordefinierten Grenzwert erreicht ( Der Standardwert ist 2 MB) und in einer temporären Datei gespeichert. Der Speicherort der temporären Datei wird auf die gleiche Weise wie bei sys_get_temp_dir() ermittelt. Das Speicherlimit von php://temp kann durch Hinzufügen von /maxmemory:NN gesteuert werden. NN ist die maximale Datenmenge, die im Speicher gespeichert wird Wird der Betrag überschritten, wird eine temporäre Datei verwendet. php://filter ist eine Meta Wrapper zum Filtern von Anwendungen beim Öffnen eines Datenstroms. Dies ist nützlich für All-in-One-Dateifunktionen wie readfile(), file() und file_get_contents(), bei denen keine Möglichkeit besteht, zusätzliche Filter anzuwenden, bevor der Stream-Inhalt gelesen wird. Das Ziel php://filter verwendet die folgenden Parameter als Teil seines Pfads. Auf einem Pfad können zusammengesetzte Filterketten angegeben werden. zlib:// - - bzip2:// -- zip:// – Komprimierter Stream. zlib: PHP 4.0.4 - PHP 4.2.3 (unterstützt nur Systeme mit fopencookie) compress.zlib: / / und compress.bzip2:// PHP 4.3.0 und höher zlib: funktioniert ähnlich wie gzopen() , Sein Datenstrom kann aber auch von fread() und anderen Dateisystemfunktionen verwendet werden. Dies ist seit PHP 4.3.0 veraltet, da es mit anderen Dateinamen mit „:“-Zeichen verwechselt wird. Bitte verwenden Sie stattdessen compress.zlib://. compress.zlib://, compress.bzip2:// sind gleich gzopen() und bzopen(). Und kann auf Systemen verwendet werden, die Fopencookie nicht unterstützen. ZIP-Erweiterung registriert zip: Kapselungsprotokoll. Optional data:// – Daten (RFC 2397) . Verwendung: data://text/plain;base64, Attribute Unterstützung Vorbehaltlichallow_url_fopen Ja Schreiben zulassen Nein
$var ;
}
$a=5;
foo($a);
?>foreach (array(1, 2, 3) as $row) {// etwas tun}
$var ;
}
$a=5;
foo($a);
?>
$var ;
}
$a=5;
foo($a);// $a is 6 here
?> 6 . Dies liegt daran, dass die Variable
$var ;
}
$a=5;
foo($a);// $a ist hier 6
?> Beachten Sie, dass es im Funktionsaufruf keine Referenzsymbole gibt – nur in die Funktionsdefinition haben. Die Funktionsdefinition allein reicht aus, damit Parameter korrekt per Referenz übergeben werden Folgendes kann per Referenz übergeben werden:
$a = 5;
return $a;
}
foo(bar()); // 自 PHP 5.0.5 起导致致命错误
foo($a = 5) // 表达式,不是变量
foo(5) // 导致致命错误
?>Funktionsleiste( ){ // Beachten Sie das fehlende &
$a = 5;
return $a;
}
foo(bar()); // Verursacht seit PHP 5.0.5 Fatal Fehler
foo($a = 5) // Ausdruck, keine Variable
foo(5) // Verursacht schwerwiegenden Fehler
?>
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue; // prints the new value of $obj->value, i.e. 2.
?>< ? php
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue ist eine Referenz auf $obj->value, der 42 ist.
$obj->value = 2;
echo $myValue; // gibt den neuen Wert von $obj->value aus, d. h. 2.
?>
$b =& $a;
unset($a);
?>
echo $php_errormsg; //Wrong parameter count for strpos()
?>@strpos();
echo $php_errormsg; //Falsche Parameteranzahl für strpos()
?>
file_get_contents("http://example.com");
var_dump($http_response_header);
}
get_contents();
/>var_dump($http_response_header);
?>
<span>/home/bjori/ex.php:8 Something happend (911) [MyCustomException]
/home/bjori/ex.php:6 You are doing it wrong! (112) [InvalidArgumentException]
</span>
<span>Runs obj::offsetExists()
string(17) "obj::offsetExists"
bool(true)
Runs obj::offsetExists() and obj::offsetGet()
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
bool(false)
Runs obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get
string(17) "obj::offsetExists"
bool(true)
</span>
private static $sfoo = 1;
private $ifoo = 2;
}
$cl1 = static function() {
return A::$sfoo;
};
$cl2 = function() {
return $this->ifoo;
};
$bcl1 = Closure::bind($cl1, null, 'A');
$bcl2 = Closure::bind($cl2, new A(), 'A');
echo $bcl1(), "n"; //1
echo $bcl2(), "n"; //2
?> zurück A {
private static $sfoo = 1;
private $ifoo = 2;
}
$cl1 = static function() {
return A: :$sfoo ;
};
$cl2 = function() {
return $this->ifoo;
};
$bcl1 = Closure::bind ($cl1 , null, 'A');
$bcl2 = Closure::bind($cl2, new A(), 'A');
echo $bcl1(), "n" //1
echo $bcl2(), "n"; //2
?>
function __construct($val) {
$this->val = $val;
}
function getClosure() {
//returns closure bound to this object and scope
return function() { return $this->val; };
}
}
$ob1 = new A(1);
$ob2 = new A(2);
$cl = $ob1->getClosure();
echo $cl(), "n"; //1
$cl = $cl->bindTo($ob2);
echo $cl(), "n"; //2
?> br />Klasse A {
Funktion __construct($val) {
$this->val = $val;
}
Funktion getClosure() {
/ /gibt den an dieses Objekt und Umfang gebundenen Abschluss zurück
return function() { return $this->val };
}
}
$ob1 = new A( 1) ;
$ob2 = new A(2);
$cl = $ob1->getClosure();
echo $cl(), "n" //1$cl = $cl->bindTo($ob2);
echo $cl(), "n" //2
?>
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);
// Stellen Sie über die IP „192.168.0.100“ und den Port „7000“ eine Verbindung zum Internet her
$opts = array(
'socket' = > array(
'bindto' => '192.168.0.100:7000',
),
);
// Stellen Sie über Port '7000' eine Verbindung zum Internet her$ opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);
// Erstellen Sie den Kontext...
$context = stream_context_create($opts);
// ...und verwenden Sie ihn, um die Daten abzurufen
echo file_get_contents('http:/ /www.example .com', false, $context);
?>
Zusammenfassung des Kapselungsprotokolls
属性
支持
受 allow_url_fopen 影响
No
允许读取
Yes
允许写入
Yes
允许添加
Yes
允许同时读和写
Yes
支持 stat()
Yes
支持 unlink()
Yes
支持 rename()
Yes
支持 mkdir()
Yes
支持 rmdir()
Yes
Attribute
Unterstützt
Betroffen vonallow_url_fopen
Nein
Lesen zulassen
Ja
Schreiben zulassen
Ja
Hinzufügen zulassen
Ja
Gleichzeitiges Lesen und Schreiben zulassen
Ja tr>
Support stat()
Ja
Unterstützung unlink()
Ja
Unterstützung rename() Ja
Unterstützt mkdir()
Ja td>
table>
Unterstützt rmdir()
Ja
Zusammenfassung des Kapselungsprotokolls
属性
支持
受 allow_url_fopen 限制
Yes
允许读取
Yes
允许写入
No
允许添加
No
允许同时读和写
N/A
支持 stat()
No
支持 unlink()
No
支持 rename()
No
支持 mkdir()
No
支持 rmdir()
No
Eingeschränkt durchallow_url_fopen
Ja
Schreiben zulassen
Nein
Hinzufügen zulassen
Nein
Gleichzeitiges Lesen und Schreiben zulassen
N/A td>
Support stat()
Nein
属性
PHP 4
PHP 5
受 allow_url_fopen 影响
Yes
Yes
允许读取
Yes
Yes
允许写入
Yes (仅支持新文件)
Yes (新文件/启用 <code>overwrite 后已存在的文件)
允许添加
No
Yes
允许同时读和写
No
No
支持 stat()
No
自 5.0.0 起:仅仅 filesize()、 filetype()、 file_exists()、 is_file() 和 is_dir()。 自 PHP 5.1.0 起: filemtime()。
支持 unlink()
No
Yes
支持 rename()
No
Yes
支持 mkdir()
No
Yes
支持 rmdir()
No
Yes
Umbenennen unterstützen() td>
Nein
Support mkdir()
Nein td>
table>ftp:// – ftps:// – Zugriff auf FTP(s)-URLs. Ermöglicht das Lesen vorhandener Dateien per FTP sowie das Erstellen neuer Dateien. Wenn der Server den passiven FTP-Modus nicht unterstützt, schlägt die Verbindung fehl. Nach dem Öffnen einer Datei können Sie sowohl lesen als auch schreiben, jedoch nicht gleichzeitig. Wenn die Remote-Datei bereits auf dem FTP-Server vorhanden ist und Sie versuchen, die Datei zu öffnen und zu schreiben, ohne die Kontextoption überschreiben anzugeben, schlägt die Verbindung fehl. Wenn Sie eine vorhandene Datei per FTP überschreiben möchten, geben Sie die Option Überschreiben des Kontexts zum Öffnen und Schreiben an. Alternativ kann stattdessen auch eine FTP-Erweiterung verwendet werden. Wenn Sie die from-Direktive in php.ini festlegen, wird dieser Wert als Passwort für anonymes FTP verwendet. Unterstützt rmdir()
Nein
Attribute
PHP 4
PHP 5
Betroffen vonallow_url_fopen
Ja
Ja
Lesen zulassen
Ja
Ja
Schreiben zulassen
Ja (unterstützt nur neue Dateien)
Ja (neue Dateien/vorhandene Dateien nach Aktivierung von <code>überschreiben)
Hinzufügen zulassen
Nein
Ja
Gleichzeitiges Lesen und Schreiben zulassen
Nein
Nein
Support stat()
Nein Seit 5.0.0: nur filesize(), filetype(), file_exists(), is_file() und is_dir(). Seit PHP 5.1.0: filemtime().
Support unlink()
Nein
Ja
Unterstützung rename()
Nein
Ja
Unterstützt mkdir()
Nein Ja
Unterstützt rmdir()
Nein
Ja
属性
支持
首先于 allow_url_fopen
No
首先于 allow_url_include
仅 php://input、 php://stdin、 php://memory 和 php://temp。
允许读取
仅 php://stdin、 php://input、 php://fd、 php://memory 和 php://temp。
允许写入
仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和php://temp。
允许追加
仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和php://temp(等于写入)
允许同时读写
仅 php://fd、 php://memory 和 php://temp。
支持 stat()
仅 php://memory 和 php://temp。
支持 unlink()
No
支持 rename()
No
支持 mkdir()
No
支持 rmdir()
No
仅仅支持 stream_select()
php://stdin、 php://stdout、 php://stderr、 php://fd 和 php://temp。
Den Inhalt von data:// drucken:
Zusammenfassung des Kapselungsprotokolls
属性
支持
受限于 allow_url_fopen
No
受限于 allow_url_include
Yes
允许读取
Yes
允许写入
No
允许追加
No
允许同时读写
No
支持 stat()
No
支持 unlink()
No
支持 rename()
No
支持 mkdir()
No
支持 rmdir()
No
Nein
Vorbehaltlich „allow_url_include“
Ja
Lesen zulassen
<code>Anhängen zulassen<span></span>
Nein
Gleichzeitiges Lesen und Schreiben zulassen
Nein
Support stat()
Nein
Support unlink()
Nein
Support rename()
Nein td>
Unterstützt mkdir()
Nein
RMdir() unterstützen
Nein