【问题标题】:Defined variables and arrays vs functions in phpphp中定义的变量和数组与函数
【发布时间】:2012-04-18 17:11:20
【问题描述】:

简介

我有一些值,我可能想在每个页面加载时访问几次。我可以采用两种不同的方法来访问它们,但我不确定哪一种“更好”。三个已经实现的示例是我在此处描述的语言、URI 和显示文本的几个选项:

语言

现在是这样配置的:lang() 是一个根据参数返回不同值的函数。

示例:lang("full") 打印当前语言“English”,而lang() 打印当前语言的缩写“en”。还有更多选项,例如lang("select")lang("selectact") 等,可以打印不同的内容。代码太长且与案例无关,所以如果有人想要它,请询问它。

网址

$Url 数组也会根据请求返回不同的值。整个数组在页面开头完全定义,用于获取当前页面较短但准确的链接。

示例:echo $Url['full'] 将打印“http://mypage.org/path/to/file.php?page=1”,echo $Url['file'] 将打印“file.php”。它对表单中的action="" 和许多其他内容很有用。 $Url['folder']$Url['file'] 等还有更多值。代码也是如此,如果需要,只需请求即可。

文字

[您可以跳过此部分]

还有一个名为 $Text 的数组,其定义方式与 $Url 相同。整个数组在开头定义,进行mysql调用并使用while循环为当前页面定义所有$Text[$i]。我不确定这是否比多次调用单个 mysql 单元更有效。

示例:echo $Text['54'] 打印“这只是一个测试数组!”这可以通过text(54) 之类的函数完美实现。

问题

通过这 3 个示例,您可以看到我使用不同的方法来完成几乎相同的功能(不是双关语),但我不确定哪一种应该成为我的代码的标准方法。我可以创建一个名为url() 和另一个名为text() 的函数来输出我想要的。我认为在这些情况下使用函数会更好,但我不确定为什么。因此,我非常感谢您的意见和建议。

我应该按照我描述的方式混合数组和函数还是应该只使用函数?

请在此基础上回答您的问题:

  • 源代码需要可读可重复使用其他开发人员
  • 资源消耗(处理、时间和内存)。
  • 越短代码越好。
  • 解释原因越多越好。

谢谢

PS,现在我知道 $Url 和 $Uri 之间的区别了。

【问题讨论】:

    标签: php arrays function optimization readability


    【解决方案1】:

    听起来您正在通过数组表示法实现模棱两可的函数。通常,这些是带有方法的类。 $url['full'] 将是 $url->getFullPath()。方法比数组访问器更受欢迎,因为方法已记录在案,并且可以由 IDE 进行自省。对象更可取,因为(在您的示例中)您可以延迟加载信息。现在,您的脚本正在编译 $Url 数组并计算每个可能键的值,以便在脚本中使用它。而$request 对象只能根据请求进行解析 - 而不是实例化。

    【讨论】:

    • 我不完全理解你。 “方法”是什么意思?魔法方法?另外,如果您说我正在使用对象,为什么要使用“而 $request 对象...”来与我的脚本进行对比?两个句子都不是关于对象的吗?对不起,我的英语不好...
    • 我肯定也会将langurltext(尽管我可能会将其与lang 合并)变成类。但我认为在这种情况下,我会使用静态类,然后像这样使用它们:URL::getFullPath()Lang::get(54)(尽管我从不使用数字键进行翻译)。
    • 在您的示例中,您传入的变量的每个变体都应该是一个具体的方法。动态值除外。例如:您的 $url 数组将转换为 $request 对象。你可以调用它的具体方法,比如$request->getFullPath().. 你也可以调用$request->getParam('page')。你不需要神奇的方法来做你正在做的事情——它们总是让事情变得更复杂,但有它们的用途。 $request 是我引用你的 $url 数组的对象版本。
    • 感谢这些课程,我会去了解它们。此外,我对用于翻译的数字键进行了很多思考,并且由于几种语言会有成百上千的数组,我认为这是最好的方法。为了输入文本,我打开了源页面和翻译页面并在它们之间切换,所以没有问题。
    【解决方案2】:

    我正在使用类似 config array var 的东西。设置字符串的位置。以后阅读使用$LBL["hello"]='Hi!' 比使用lbl(5) 更好。想想你自己什么时候会在一年后回到你的代码:)

    【讨论】:

    • 我真的不需要定义很多全局变量(不是说没有),因为这些函数只被调用以在 html 中打印一些东西。实际上,相同的代码用法是:echo $Url["full"];url("full")。在主要问题中编辑。
    • 当你调用一个函数时,如果你设置了本地变量,你也在做同样的事情。您只定义许多本地人。相同的内存成本。
    • 提示 - 查看一些开源软件的代码。它由最好的。 Drupal、Wordpress 等
    • 数值没有问题,还有另一个脚本可以让我轻松知道什么是什么。此外,字母比数字更容易出错,而且我避免了为不同的文本数组编造数千个名称的痛苦。将做关于像 Drupal 这样的开源软件的高峰。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多