Невозможно получить доступ к самому себе:: если класс класса не активен
Я пытаюсь использовать функцию 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