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
我正在尝试创建一个日志记录 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