首頁  >  文章  >  後端開發  >  PHP如何操作檔案的擴充屬性

PHP如何操作檔案的擴充屬性

醉折花枝作酒筹
醉折花枝作酒筹轉載
2021-07-16 15:37:111590瀏覽

在作業系統的檔案中,也存在著我們可以自己定義的檔案屬性。這些屬性不是保存在文件內容中,也不是直接能看到的內容。它們可以將一個鍵值對資訊永久得關聯到檔案上,一般現在的 Linux 系統都支援這樣的檔案擴充屬性的功能。

PHP如何操作檔案的擴充屬性

在作業系統中我們可以透過 setfattr、 getfattr、 attr 這些指令來操作它們。當然,PHP 也為我們提供了一個擴充功能可以用來對檔案的擴充屬性進行操作。

新增擴充屬性

$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)

首先我們定義了操作的文件,在這裡我們直接使用 \_\_FILE\_\_ 魔術常數來操作目前我們測試的這個 php 檔案。然後使用 xattr_set() 就可以設定檔案的擴充屬性了。檔案的擴充屬性有命名空間的概念,PHP 也相應地為我們提供了 普通(user)命名空間 和 XATTR_ROOT(root指令空間) 兩種形式。

root 命名空間中的屬性可以由超級使用者設置,對其他使用者不可見,而user 命名空間則是根據檔案的權限來定義的,也就是目前可以操作這個檔案的使用者就可以讀取到這個檔案的user命名空間所設定的這些擴充屬性。

查看擴充屬性清單

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"
//   }

xattr_list() 函數可以取得檔案所定義的所有命名空間的鍵。它也是區分 user 和 root 命名空間的。

取得擴充屬性內容

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"

xattr_get() 函數用來取得指定鍵的擴充屬性內容。配合上面的 xattr_list() 函數就可以取得某個檔案的所有擴充屬性資訊。如果我們不增加 XATTR_ROOT 參數的話,是無法讀取到 root命名空間 中的內容的。

刪除擴充屬性

var_dump(xattr_remove($file, 'Num.')); // bool(true)
var_dump(xattr_list($file));
// array(1) {
//     [0]=>
//     string(6) "Author"
//   }

xattr_remove() 用於刪除檔案的擴充屬性,我們直接刪除了測試檔案的 user命名空間 中的 Num. 屬性。再一次看它的 xattr_list() 就只剩下 Author 了。同樣地,這個函數也是支援第三個參數來指定是否是 root命名空間 的運算。

驗證系統是否支援擴充屬性操作

var_dump(xattr_supported($file)); // bool(true)

最後就是一個 xattr_supported() 函數,用來驗證目前作業系統的檔案系統是否支援 xattr 相關的操作。

總結

今天的內容非常簡單淺顯,這個檔案的擴充屬性的功能說實話也是看到 PHP 中有這個功能擴充才回去查看了 Linux 系統中的相關文件。所以說,學習都是關聯的,當我們在學習 PHP 的時候,順從帶也在學習 Linux ,同時更常接觸到 MySQL 、 Nginx 等應用程式的相關知識。專注於一個領域,同時擴展其它領域的知識,才是學習的最佳方式。

測試程式碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/9.在PHP中操作文件的扩展属性.php

推薦學習:php影片教學

#

以上是PHP如何操作檔案的擴充屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除