在PHP中使用$this作为文件级变量(例如跨文件的函数)是好还是坏?


Is it a good/neutral/bad practice to use $this as a file-level variable in PHP (e.g. functions spanning files)?

这有点难以解释我的意思,我不知道如何命名这个模式,所以我将用一个例子来解释:

First.php:

<?php
    class MyClass
    {
        public $Meaning = 42;
        public function MyFun
        {
            include("Second.php");
        }
    }
?>

Second.php:

<div><?= $this->Meaning ?></div>

Second.php中,我们依赖于MyClass中的方法包含,并使用$this变量。不知怎么的,这感觉……对我来说不自然。也许是因为我的c#背景,但我强烈觉得函数不能跨文件。类可以,但函数不行(OTOH跨类正是PHP not所允许的)。

所以…我这样做是不合理的吗,还是这真的被认为是一种不好的做法?或者在视图逻辑(比如MVC)中,这甚至是标准的方法?

如果没有这个类,你的View将无法使用;但是,除此之外,我不认为这样做是不好的做法。

据我所知,这正是一些框架所做的——比如Zend框架。

我不认为这是一个不好的做法。它看起来确实有点不寻常,但也有好处。在我看来,主要的一点是你可以访问视图的任何成员函数(它们可能是某种帮助器),并以多态方式进行。

我不知道多态能力是否有多大意义(会有视图的层次结构吗?)——但如果有,这是一个很好的语法来访问它。

另外,还有second.php中的代码发出的小消息:"这个是视图"。