设计模式——在PHP中运行一次代码


design patterns - Running code in a PHP once

我试图在PHP中编写一个类,作为命令行工具集合的包装器,使它们更容易从PHP中使用。

我在文件myclass.php中有一个类(MyClass)。

我有代码检查是否安装了所需的工具,然后将常数(TOOLS_AVAILABLE)设置为truefalse。虽然代码不多,但我只希望它在第一次有人试图实例化我的类使用它的任何静态函数时运行。处理这种情况的最佳实践是什么?

我只希望它在第一次有人试图实例化我的类或使用它的任何静态函数时运行。

嗯,最好的答案是不要使用任何静态方法。然后你可以根据@ treeggarden的答案将代码粘贴到构造函数方法中。

如果必须有静态方法,那么在类中需要一个静态标志来指示何时调用了"一次运行"代码,这样就可以避免再次运行它。然后从每个静态方法和构造函数显式调用它。像这样:

<?php
class myClass {
    private static $hasRunOnce = false;
    private static runMeOnce()
    {
        if (!self::$hasRunOnce) {
            self::$hasRunOnce = true;
            //put your 'run once' code here...
        }
    }
    public static oneOfYourStaticMethods()
    {
        self::runMeOnce();
        //put your static method code here...
        //this would be the same for each of your static methods and your constructor.
    }
}

希望对你有帮助。

你需要在你的类中创建一个__construct函数,并把你想在实例化时执行的任何代码放在那里:

class MyClass {
    function __construct(/* arguments */) {
        /* your code here */
    }
}

当有人实例化该类时,代码将只执行一次。