Невозможно получить доступ к самому себе:: если класс класса не активен

Я пытаюсь использовать функцию PHP из общедоступной статической функции (я немного сократил):

class MyClass {

public static function first_function() {

    function inside_this() {    
            $some_var = self::second_function(); // doesnt work inside this function
    }               

    // other code here...

} // End first_function

protected static function second_function() { 

    // do stuff

} // End second_function

} // End class PayPalDimesale

Это, когда я получаю сообщение об ошибке "Не могу получить доступ к себе:: если класс класса не активен".

Если я вызываю second_function вне функции inside_this, он отлично работает:

class MyClass {

public static function first_function() {

    function inside_this() {    
            // some stuff here  
    }               

    $some_var = self::second_function(); // this works

} // End first_function

protected static function second_function() { 

    // do stuff

} // End second_function

} // End class PayPalDimesale

Что мне нужно сделать, чтобы использовать second_function из функции inside_this?

Ответ 1

Это потому, что Все функции в PHP имеют глобальную область - их можно вызывать вне функции, даже если они были определены внутри и наоборот.

Итак, вам нужно сделать:

 function inside_this() {    
   $some_var = MyClass::second_function(); 
 }     

Ответ 2

Работает с PHP 5.4:

<?php
class A
{
  public static function f()
  {
    $inner = function()
    {
      self::g();
    };

    $inner();
  }

  private static function g()
  {
    echo "g\n";
  }
}

A::f();

Вывод:

g

Ответ 3

Попробуйте изменить первую функцию на

public static function first_function() {

    $function = function() {    
            $some_var = self::second_function(); //  now will work
    };               
    ///To call the function do this
    $function();
    // other code here...

} // End first_function