0

我正在尝试创建一个日志记录类,可以通过以下方式在 PHP 应用程序周围的所有类中访问它

logger::log(something);

这会将下一行添加到我的日志文件中(插入文件的部分对我来说很容易)。我在DIBI(数据库框架)中看到了双冒号。这很酷,因为我可以在任何需要的地方使用 dibi::dataSource("") 。但不知道如何在我的应用程序中执行此操作。

现在我在某个类中有一些东西(我在应用程序中有更多类似的类),比如(短路):

Class DoSomething {
  function runTests() {
    logger::log("Test started");
    // do the magic
    logger::log("It ends");
  }
}

在 index.php 我有类似的东西:

// init
$app = new DoSomething;
$app->runTests();
...

而且我想在 index.php 中有一些代码,这将在类中添加“logger::log();”的日志记录功能的可访问性。但不知道如何做到这一点。你能帮我么?

也许它可以以某种方式与“扩展”一起工作,但有没有更简单的解决方案?我试图阅读 - https://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php但仍然不确定,如何做到这一点。

谢谢你。

4

2 回答 2

0

双冒号允许访问类中的静态函数和常量。

将您的类方法更改为:

static function runTests() {
...

然后这样称呼它

DoSomethin::runTests();
于 2019-10-13T19:33:41.823 回答
0

如果我正确理解您的问题,那么您正在寻找的是一种静态方法。这种方法允许您在不事先实例化对象的情况下调用您的函数(使用new Logger

为此,您的函数应声明为public static. 这是一个例子:

public static function test()
{
    // Method implementation
}

更多文档在这里:php静态函数

于 2019-10-13T19:34:26.273 回答