Heim > Artikel > Backend-Entwicklung > Wie PHP erweiterte Attribute von Dateien verarbeitet
In den Dateien des Betriebssystems gibt es auch ein Dateiattribut, das wir selbst definieren können. Diese Eigenschaften werden weder im Dateiinhalt gespeichert, noch sind sie direkt sichtbar. Sie können eine Schlüssel-Wert-Paar-Information dauerhaft mit einer Datei verknüpfen. Im Allgemeinen unterstützen aktuelle Linux-Systeme solche erweiterten Dateiattribute.
Im Betriebssystem können wir sie über die Befehle setfattr, getfattr und attr bedienen. Natürlich stellt uns PHP auch eine Erweiterung zur Verfügung, mit der wir die erweiterten Attribute von Dateien bearbeiten können.
$file = __FILE__; var_dump(xattr_set($file, 'Author', 'ZyBlog')); // bool(true) var_dump(xattr_set($file, 'Num.', 121 )); // bool(true) var_dump(xattr_set($file, 'Description', 'shuo ming', XATTR_ROOT)); // bool(true)
Zuerst definieren wir die zu bearbeitende Datei. Hier verwenden wir direkt die magische Konstante __FILE__, um die PHP-Datei zu bedienen, die wir gerade testen. Verwenden Sie dann xattr_set(), um die erweiterten Attribute der Datei festzulegen. Die erweiterten Attribute von Dateien haben das Konzept eines Namespaces, und PHP stellt uns auch zwei Formen zur Verfügung: einen gewöhnlichen (Benutzer-)Namespace und XATTR_ROOT (Root-Befehlsraum).
Attribute im Root-Namespace können vom Superuser festgelegt werden und sind für andere Benutzer nicht sichtbar, während der Benutzernamespace basierend auf den Berechtigungen der Datei definiert wird, d. h. der Benutzer, der die Datei derzeit bedienen kann, kann die Datei lesen . Diese erweiterten Attribute werden im Benutzernamensraum festgelegt.
var_dump(xattr_list($file, XATTR_ROOT)); // array(1) { // [0]=> // string(11) "Description" // } var_dump(xattr_list($file)); // array(2) { // [0]=> // string(4) "Num." // [1]=> // string(6) "Author" // }
Die Funktion xattr_list() kann die Schlüssel aller in der Datei definierten Namespaces abrufen. Außerdem wird zwischen Benutzer- und Root-Namespaces unterschieden.
var_dump(xattr_get($file, 'Author')); // string(6) "ZyBlog" var_dump(xattr_get($file, 'Description')); // bool(false) var_dump(xattr_get($file, 'Description', XATTR_ROOT)); // string(9) "shuo ming"
Die Funktion xattr_get() wird verwendet, um den erweiterten Attributinhalt des angegebenen Schlüssels abzurufen. Mit der Funktion xattr_list() oben können Sie alle erweiterten Attributinformationen einer Datei abrufen. Wenn wir den Parameter XATTR_ROOT nicht hinzufügen, können wir den Inhalt des Root-Namespace nicht lesen.
var_dump(xattr_remove($file, 'Num.')); // bool(true) var_dump(xattr_list($file)); // array(1) { // [0]=> // string(6) "Author" // }
xattr_remove() wird verwendet, um die erweiterten Attribute der Datei zu löschen. Wir löschen direkt das Num-Attribut im Benutzernamensraum der Testdatei. Wenn man sich xattr_list() noch einmal anschaut, bleibt nur noch der Autor übrig. Ebenso unterstützt diese Funktion auch einen dritten Parameter, um anzugeben, ob es sich um eine Root-Namespace-Operation handelt.
var_dump(xattr_supported($file)); // bool(true)
Schließlich gibt es eine Funktion xattr_supported(), mit der überprüft wird, ob das Dateisystem des aktuellen Betriebssystems xattr-bezogene Vorgänge unterstützt.
Der heutige Inhalt ist sehr einfach und unkompliziert. Ehrlich gesagt habe ich diese Funktionserweiterung in PHP gesehen und die relevanten Dokumente im Linux-System überprüft. Wenn wir PHP lernen, lernen wir übrigens auch Linux. Gleichzeitig werden wir häufig mit relevanten Kenntnissen über MySQL, Nginx und andere Anwendungen vertraut gemacht. Der beste Weg zu lernen besteht darin, sich auf einen Bereich zu konzentrieren und gleichzeitig Ihr Wissen in anderen Bereichen zu erweitern.
Testcode:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/9.在PHP中操作文件的扩展属性.php
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWie PHP erweiterte Attribute von Dateien verarbeitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!