1

自己をグローバル関数に渡す方法

class A
{
  public static $A_var = "hello" ;

  private static  function A_function()
  {
    some_global_function( self ) ;
  }
}

そしてそれを受け取ります:

function some_global_function( $argo_self ) 
{
  echo $argo_self::A_var ;
} 
4

4 に答える 4

3

get_called_class静的メソッドのクラスの名前を与える使用

class A
{ 
    public static $A_var = "hello" ;

    private static function A_function()
    { 
        some_global_function( get_called_class() ) ;
    }
}

アクセスするには、これを行う必要があることに注意して$A_varください。現時点では、という名前の定数にアクセスしようとしています。A_var

function some_global_function( $argo_self ) 
{
    echo $argo_self::$A_var ;
    // note the $ ---^ 
} 
于 2013-03-24T13:33:19.700 に答える
1

ReflectionClass :: getStaticProperties()を介して、使用可能なすべての静的フィールドを取得できます。

private static  function A_function()
{
  // pass class name
  some_global_function( 'A' ) ;
}

function some_global_function( $className ) 
{
  $reflClass = new ReflectionClass($className);
  $staticProps = $reflClass->getStaticProperties();

  echo $staticProps['A_var'];
}

ライブデモ:http ://codepad.org/6ZZjNtXC

于 2013-03-24T13:33:17.207 に答える
0

これを試して

class ExampleClass {

    // Create loaded variable as to only init once
    static $loaded = false;

    // Create static variable to hold self
    static $self;

    // Create initialization function to assign self to self::$self
    public static function init() {

        // Assign the current class to self::$self
        self::$self = get_called_class();

        // Set self::$loaded to true to prevent double execution
        self::$loaded = true;
    }

    public static function someFunction() {

        // Check to see if static class has been initialized
        if(self::$loaded == false) {

            // Initialize static class
            self::init();
        }

        // Pass this static class to the destination function
        some_global_function(self::$self);
    }
}
于 2014-02-23T10:41:20.473 に答える
-1

$this変数を使用して自己を渡します

于 2013-03-24T13:30:57.617 に答える