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

Я пытаюсь использовать функцию 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 изнутри этой функции?

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

Так что вам нужно сделать:

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

Работает с 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 

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

 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