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