在PHP中运行代码一次

时间:2015-06-01 07:27:14

标签: php design-patterns

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

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

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

2 个答案:

答案 0 :(得分:0)

你需要在你的类中创建一个__construct函数,并在那里放置你想要实例化的代码:

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

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

答案 1 :(得分:0)

  

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

嗯,最好的答案是没有任何静态方法。然后你可以按照@treegarden的答案将代码粘贴在构造函数方法中。

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

<?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.
    }
}

希望有所帮助。