PHP:我有2个静态函数A和B.如何将B绑定到A,以便只能在方法A中调用B?

时间:2014-07-18 23:44:07

标签: php function

例如:

<?php

class BLAH {

    public static function A () 
    {
        self::B();
        //Do something
    }

    public static function B()
    {
        //Do something
    }

}

目标:将B绑定到A以确保无法在静态方法A之外的其他位置调用B.

2 个答案:

答案 0 :(得分:2)

我猜您想要B privateprotected,而您的目的是确保B只能从您的内部调用类。但是,如果你真的想确保只能从B调用A

public static function B()
{
     $trace=debug_backtrace();
     $caller=array_shift($trace);
     if ($caller['function'] != 'A' || $caller['class'] != 'BLAH') {
          throw new Exception('Illegal function invocation');
     }
     else {
         //do something
     }
}

答案 1 :(得分:1)

简单:受保护的方法:

class BLAH {

    public static function A () 
    {
        self::B();
        //Do something
    }

    protected static function B()
    {
        //Do something
    }

}