php读取目录-干货:PHP代码的20个实用方法

在本文中,我们将了解一些有用的 PHP 开发技巧和方法,可用于改进和优化 PHP 代码。

1.不要使用相对路径

你经常会听到:

这种方法有很多缺点:它首先查找指定的 php include 路径,然后查找当前目录,因此检测到的路径太多。 如果该脚本被另一个目录中的脚本包含,则其基目录将成为另一个脚本所在的目录。

还有一个问题,当计划任务运行脚本时,其父目录可能不是工作目录。 所以最好的选择是使用绝对路径:

我们定义一个绝对路径,并且该值是硬编码的。 我们还可以改进一下,路径/var/www/project也可能会变,那么我们每次都要改吗? 不,我们可以使用 __FILE__ 常量,例如:

现在,无论你移动到哪个目录,比如移动到内网服务器,代码都可以正确运行,无需修改。

2.不要使用require,直接include

脚本后面可以引入多个文件,例如泛型、工具文件和辅助函数,例如:

这种用法相当原始,应该更灵活php读取目录,并且应该编译一个辅助函数来包含该文件。 例如:

有什么区别? 代码可读性更强,以后可以根据需要扩展这个功能,比如:

您还可以执行更多操作:查找同一文件的多个目录。 更改类文件放置的目录很容易,无需在代码中到处一一更改。 可以使用类似的函数加载诸如 html 内容之类的文件。

3. 保留应用程序的调试代码

在开发环境中,我们复制数据库查询语句,转储有问题的变量值,一旦问题解决,我们注释或删除它们。 然而,更好的做法是保留调试代码。 在开发环境中,您可以:

在服务器中,您可以:

4.使用跨平台函数执行命令

system、exec、passthru、shell_exec 这四个函数可以用来执行系统命令。 每个的行为都略有不同,问题是在共享主机上时,某些功能可能会被选择性地禁用。 大多数新手每次都会先检查哪个功能可用,然后再使用。 更好的解决方案是将函数封装成跨平台函数。

上面的函数只要有系统函数可用就会运行shell命令,这样可以保持代码的一致性。

5. 灵活的函数编译

使用前面的函数添加单个项目。 当向列表添加项目时,您想创建另一个函数吗? 不需要,只要注意不同类型的参数,就会更加灵活,比如:

现在,同一个函数可以处理不同类型的输入参数。 您可以参考前面的反例,在多个地方构建代码,使其更加智能。

6. 故意忽略 php 关闭标签

我很好奇为什么这么多关于 php 建议的博客文章没有提到这一点。

这会节省你很多时间,让我们举一个反例:

//一个super_class.php文件

//结束标记后的超级额外字符

这样,您将收到 headers already send 错误。 为什么? 因为“超级额外字符”已经输出了。 现在您必须开始调试。 这要花很多时间才能找到超级额外的位置。 因此,养成省略接近字符的习惯:

这样会更好。

7. 将所有输入收集到某处,并一次输出到浏览器

这称为输出缓冲,假设您在不同的函数中有输出:

或者,在某处集中收集输出。 您可以将其存储在函数的局部变量中php读取目录,或使用 ob_start 和 ob_end_clean。 如下:

为什么需要输出缓冲:

>>您可以在发送到浏览器之前修改输出,例如str_replaces函数或preg_replaces或添加一些监视/调试html内容。

>> 在输出到浏览器时进行 php 处理很糟糕。 您应该已经看到错误消息出现在某些网站的侧边栏或中间。 知道为什么会发生吗? 因为处理和输出是混合的。

8. 发送正确的 mime-type header

输出一些xml。

效果很好,但需要一些改进。

注意标题行,它告诉浏览器发送xml类型的内容,以便浏览器能够正确处理。 许多 javascript 库也依赖于标头信息。

类似的javascript、css、jpg图像、png图像:

9.为mysql连接设置正确的字符编码

我遇到过mysql表中设置了unicode/utf-8编码,phpadmin也能正确显示。 但是当你获取到内容并输出到页面上时,就会出现乱码。 这里的问题出在mysql连接的字符编码上。

连接数据库后,最好设置连接的字符集。 如果您的应用程序要支持多种语言,这是必要的。

10.使用htmlentities设置正确的编码选项

php5.4之前,字符默认编码为ISO-8859-1,无法直接输出。

读取目录列表失败_php读取目录_读取目录下所有文件名

php5.4之后默认编码是UTF-8,这样会解决很多问题。 但如果你的应用程序是多语言的,你仍然要注意编码问题。

11.不要使用gzip来压缩应用程序中的输出

您考虑过使用 ob_gzhandler 吗? 不要这样做,这是没有意义的。 PHP应该只用来编译应用程序,而不应该担心服务器和浏览器之间的数据传输优化问题。

使用 Apache 的 mod_gzip/mod_deflate 模块压缩内容。

12.使用json_encode输出动态

php经常被用来输出动态的javascript内容:

13、写入文件前,检查目录写入权限

在写入文件或保存文件之前,请确保该目录可写。 如果不可写,就会输出错误信息,这会节省你大量的调试时间。 在linux系统中,需要处理权限。 不正确的目录权限会导致很多问题,文件可能难以读取等等。

确保您的应用程序足够智能,可以输出各个重要信息。

这基本上是正确的,但通过一些间接的方式,file_put_contents 可能会因以下几个原因而失败:

>> 父目录不存在

>> 目录存在,但不可写

>> 文件被写锁定?

所以写文件之前最好先做清楚测试。

执行此操作后,您可以清楚地了解文件写入的位置以及失败的原因。

14.更改应用程序创建的文件权限

在Linux环境中,权限问题可能会浪费您大量的时间。 从现在开始,每当您创建一些文件时,请确保使用 chmod 设置正确的权限。 否则,也许该文件最初是由“php”用户创建的,但你以其他用户身份登录工作,系统会拒绝访问或打开该文件,你将不得不争取获得root权限,更改权限文件等

15.不要依赖提交按钮的值

新媒体排版是一款在线图文编辑工具,可以为您节省大量的排版时间,让您的工作更加轻松高效。

上面的大部分都是正确的,除了应用程序是多语言的,“保存”可能意味着其他东西,你如何区分它们。 因此,不要依赖于提交按钮的值。

现在您可以摆脱提交按钮值的束缚。

16、具有相同值的变量定义为静态变量

使用静态变量代替:

17.不要直接使用$_SESSION变量

一些简单的反例:

这可能会导致个人问题。 如果多个应用程序在同一个域名上运行,会话变量可能会发生冲突。 两个不同的应用程序可以使用相同的会话密钥。 例如,后端门户和后端管理系统使用相同的域名。 从现在开始,使用应用程序特定的键和包装函数:

18. 将实用函数封装到类中

如果您在一个文件中定义了很多实用函数:

这些函数的使用分散在整个应用程序中。 您可能想将它们封装在一个类中:

明显的好处是,如果 PHP 有一个同名的内置函数,这可以避免冲突。

另一种思考方式是,您可以在同一个应用程序中维护同一个类的多个版本,而不会引起冲突,这就是封装的基本用途。

19. 一堆愚蠢的技巧

>> 使用 echo 代替 print

>> 使用 str_replace 而不是 preg_replace 除非你绝对需要

>> 不要使用短标签

>> 简单字符串使用单冒号而不是双引号

请记住在 >>head 重定向后使用 exit

>> 不要在循环中调用该函数

>>isset 比 strlen 快

>>从头到尾一致的底层代码

>> 不要删除循环或 if-else 括号

不要写这样的代码:

这绝对是浪费。 写为:

不要试图通过省略一些句子来缩短代码,但要保持逻辑简短。

>>使用具有句子突出显示功能的文本编辑器。 突出显示句型可以减少错误。

20.使用array_map快速处理链表

例如,您想要修剪数组中的所有元素。 新手可以:

但使用 array_map 更简单:

这会将修剪应用于 $arr 列表的每个元素。 另一个类似的函数是array_walk。 请参阅文档以了解更多方法。