【问题标题】:Should class method code be accessing external variables directly?类方法代码是否应该直接访问外部变量?
【发布时间】:2009-06-23 19:12:09
【问题描述】:

我有一些访问外部变量的 PHP 类方法。这些变量不作为参数传递,而是直接由方法中的代码使用。

一种方法使用一个在配置文件中定义的变量,其目的是供需要它的应用程序的每个部分使用。这对我来说似乎没问题。

另一种方法直接访问 $_GET 变量。有代码可以处理未设置此 var 的情况,但不知何故这对我来说很臭。

这两种情况是我应该做的还是我应该有一个严格的作为参数传递的约定?

【问题讨论】:

    标签: php architecture


    【解决方案1】:

    由于您已经在使用 PHP 类并且有可能更改架构,因此您应该尝试将它们与外部变量尽可能地分离。 如果您需要使其向后兼容,您还可以设置默认变量。

    class Bla
    {
        public function blaBla($var = false)
        {
            if(!$var && isset($_GET))
                $var = $_GET;
            // ...
        }
    }
    
    $bla = new Bla();
    $bla->blaBla();
    $bla->blaBla($_GET);
    

    我也不喜欢define() 方法(我更喜欢像Zend Framework 注册表这样的单例变量注册表)。 一个大问题是您不能再更改定义。这可能好也可能不好。我正在开发一个软件,其中 define() 部分已加密,因此即使它们在源代码中都有“钩子”(但让类方法使用定义而不是将其传递为争论……在我看来,这是非常糟糕的架构)。

    【讨论】:

      【解决方案2】:

      尝试对(http)请求和配置文件进行建模,并通过这些模型的API访问这些变量。

      【讨论】:

        猜你喜欢
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多