PHP:如何在另一个 类 中创建可使用 ::(双冒号,范围解析)访问的函数

PHP: How to create function which will be accessible with :: (double colon, scope resolution) in another classes

我正在尝试创建一个日志记录 class,PHP 应用程序周围的所有 类 都可以通过

访问它
logger::log(something);

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

现在我在一些 class 中有一些东西(我在应用程序中有更多类似的 classes)比如(简称):

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 中添加一些代码,这些代码将在 class 和 "logger::log();" 中添加日志记录功能的可访问性。但是不知道如何做到这一点。你能帮帮我吗?

也许它可以以某种方式与 "extends" 一起使用,但是有没有更简单的解决方案? 我已尝试阅读 - https://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php 但仍不确定如何阅读。

谢谢。

双冒号允许访问 class.

中的静态函数和常量

将您的 class 方法更改为:

static function runTests() {
...

然后这样称呼它

DoSomethin::runTests();

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

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

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

此处有更多文档:php static functions