Есть ли волшебный метод, чтобы запретить var_export вытащить приватные поля класса?

В языке программирования PHP нет специального "волшебного" метода, который позволил бы запретить функции varexport() выводить приватные поля класса. Однако, в PHP существует механизм доступа к приватным полям класса, используя магический метод _debugInfo().

Магический метод debugInfo() позволяет классу определить специальный массив, который будет использоваться при вызове функций vardump(), varexport() или при преобразовании объекта в строку с использованием print_r() и echo.

Чтобы предотвратить вывод приватных полей класса при вызове функции varexport(), вы можете определить магический метод _debugInfo() в вашем классе и возвращает пустой массив.

Пример использования магического метода debugInfo():

class MyClass
{
    private $privateField = 'private value';

    public function __debugInfo()
    {
        return [];
    }
}

$obj = new MyClass();

var_export($obj); // не будет выводиться приватное поле класса

В приведенном примере, при вызове функции varexport() объекта MyClass, приватное поле $privateField не будет включено в экспорт, так как метод debugInfo() возвращает пустой массив. Таким образом, вы можете "запретить" функции varexport() выводить приватные поля класса.

Однако, следует отметить, что это решение будет работать только с функцией varexport(). Другие функции, такие как vardump() или print_r(), будут показывать приватные поля класса независимо от наличия или отсутствия метода debugInfo(). Также следует отметить, что магический метод debugInfo() был введен только в PHP 5.6.0+, и поэтому не будет работать в более старых версиях PHP.