自己をグローバル関数に渡す方法
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 ;
}
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 $ ---^
}
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'];
}
これを試して
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);
}
}
$this変数を使用して自己を渡します