4

我正在创建一个全局文件来保存将在我的网站中重复使用的项目。这两行代码有什么区别?这个比那个好吗?

这个:

$logo = "img/mainlogo.jpg";

与这个:

function logo() {
   echo "img/mainlogo.jpg";
}
4

5 回答 5

4

您应该在 html 和 php 中编写清晰易读的代码并拆分。业绩利润并不显着...

<?php
...
$logo = "img/mainlogo.jpg";
...
?>
...
<img src="<?= $logo ?>" alt="logo"> 
...
于 2012-12-09T18:05:06.863 回答
2

在您发布的两个选项中,该功能是更好的选择。但是,老实说,这种事情正是常量的用途:

defined('MAIN_LOGO') || define('MAIN_LOGO','img/mainlogo.jpg');

假设您在一个必须支持多种语言的网站上工作,那么您可以简单地使用相同的技巧:

defined('CLIENT_LOCALE')  || define('CLIENT_LOCATE',$whereverYouGetThisFrom);
defined('MAIN_LOGO') || define('MAIN_LOGO','img/mainlogo_'.CLIENT_LOCALE.'.jpg');
//if language is EN, mainlogo_EN.jpg will be used, if lang is ES, mainlogo_ES.jpg, etc...

此外,一个常量,一旦定义就不能重新定义(当然,线索就在名称中)。另外:由于 PHP 在引擎盖下仍然有很多 C 内容,并且您已经标记了这个问题performance,您可能会感兴趣的是常量很像 C 的宏,它比常规函数调用甚至 C++ 快得多内联函数(即使它们确实被编译为内联函数)。

无论如何,如果你有很多想要集中的东西,要么考虑ini为你的项目创建几个文件,然后将它们解析为某种全局对象

于 2012-12-09T19:05:53.953 回答
1

函数的主要目的是避免代码重复并执行特定任务。根据该定义,使用函数只返回一个值是一个糟糕的设计。

在这种情况下,我认为代码的良好可读性比节省几个字节的内存更好。我们在 2012 年,优化很好,但这种类型的微优化简直荒谬。我更喜欢分配一个变量,它很清楚并且做你所期望的。

于 2012-12-09T18:16:52.463 回答
1

功能不错。

function logo()看那比$logo. echo不占用太多内存,但$logo确实如此。即使function logo()需要一些东西,它也会由 PHP 自己的垃圾收集器处理。您还可以使用这些功能来确保您没有滥用分配的内存。

  1. memory_get_peak_usage();
  2. memory_get_usage();

解释:

在使用中的函数结束时,PHP 会清除它正在使用的内存,至少比不使用函数时效率更高。如果您使用递归代码或类似的内存密集型代码,请尝试将代码放入函数或方法中,在关闭函数/方法时,用于函数的内存将比在循环中取消设置变量更有效地被垃圾处理本身。

来源: 防止PHP内存耗尽的7个技巧

于 2012-12-09T18:01:45.077 回答
0

$logo = "img/mainlogo.jpg";可以在以后自然地重新定义,而无需通过这样做更改代码,$logo="img/newmainlogo.jpg";而函数必须在其第一个定义中自行修改。

于 2012-12-09T18:00:59.213 回答