PHP 是否在调用函数之前读取函数?
Does PHP read functions before they are called?
我声明了 100 个函数,但实际上我并没有调用其中任何一个。定义这么多函数会影响加载时间吗?
PHP 是否在调用这些函数之前对其进行处理?
是,php解析了运行上的所有函数,并检查了可能的语法错误,(虽然这次并没有一直执行)并将他们的名字注册为符号。
当您调用任何函数时,php在注册符号table中搜索函数名称,然后执行该函数。
所以,最好只使用你的目的函数,因为它会增加符号 table.
的大小
明确一点,即使有数百个未使用的 classes 和函数也不会对程序的性能产生太大影响。有些不同,是的,也许,但不多。改进 运行 中的代码将产生更大的不同。在您完善自己的代码之前,不要担心优化语言机制。性能优化的关键是首先解决最大的问题,而最大的问题很少是由细微的语言怪癖引起的。
如果您确实想尽量减少加载过多不会使用的代码的影响,最好的方法是使用 PHP 的自动加载机制。
这可能意味着您还应该将代码编写为 classes 而不是独立函数,但无论如何这都是一件好事。
使用自动加载器意味着您可以让 PHP 完成在需要时加载所需代码的工作。如果您不使用特定的 class,那么它不会被加载,但另一方面,当您需要它时它会在那里,而无需执行 include()
或类似的操作.
此设置非常强大,消除了对加载过多代码的担忧,即使您使用的是庞大的框架库也是如此。
自动加载是一个太大的话题,我无法在此处的答案中进行足够详细的解释,但网络上有大量资源可以教授它。或者,使用现有的框架——几乎所有框架都内置了一个自动加载器系统,因此如果您使用任何一种现代 PHP 框架,您应该能够使用他们的框架。
我声明了 100 个函数,但实际上我并没有调用其中任何一个。定义这么多函数会影响加载时间吗?
PHP 是否在调用这些函数之前对其进行处理?
是,php解析了运行上的所有函数,并检查了可能的语法错误,(虽然这次并没有一直执行)并将他们的名字注册为符号。
当您调用任何函数时,php在注册符号table中搜索函数名称,然后执行该函数。
所以,最好只使用你的目的函数,因为它会增加符号 table.
明确一点,即使有数百个未使用的 classes 和函数也不会对程序的性能产生太大影响。有些不同,是的,也许,但不多。改进 运行 中的代码将产生更大的不同。在您完善自己的代码之前,不要担心优化语言机制。性能优化的关键是首先解决最大的问题,而最大的问题很少是由细微的语言怪癖引起的。
如果您确实想尽量减少加载过多不会使用的代码的影响,最好的方法是使用 PHP 的自动加载机制。
这可能意味着您还应该将代码编写为 classes 而不是独立函数,但无论如何这都是一件好事。
使用自动加载器意味着您可以让 PHP 完成在需要时加载所需代码的工作。如果您不使用特定的 class,那么它不会被加载,但另一方面,当您需要它时它会在那里,而无需执行 include()
或类似的操作.
此设置非常强大,消除了对加载过多代码的担忧,即使您使用的是庞大的框架库也是如此。
自动加载是一个太大的话题,我无法在此处的答案中进行足够详细的解释,但网络上有大量资源可以教授它。或者,使用现有的框架——几乎所有框架都内置了一个自动加载器系统,因此如果您使用任何一种现代 PHP 框架,您应该能够使用他们的框架。