在操纵体系的文件中,还存在着一种我们可以自己界说的文件属性。这些属性不是生存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容。它们可以将一个键值对信息永久得关联到文件上,一样平常现在的 Linux 体系都支持如许的文件扩展属性的功能。在操纵体系中我们可以通过 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
参考文档:
https://www.php.net/manual/zh/book.xattr.php
到此这篇关于在PHP中操纵文件的扩展属性的文章就先容到这了,更多相关php扩展属性内容请搜刮草根技术分享从前的文章或继续欣赏下面的相关文章渴望各人以后多多支持草根技术分享! |