Блог разработчика 1С-Битрикс

Вызов приватной функции из статической функции внутри класса в PHP

В PHP вы не можете напрямую вызывать приватные методы внутри статических методов, поскольку статические методы не имеют контекста экземпляра класса и не могут использовать $this. Однако вы можете создать экземпляр класса внутри статического метода и затем вызвать приватный метод через этот экземпляр. Вот как это сделать:

Вызов приватной функции внутри статической функции в пределах класса

class MyClass {
    // Приватная функция
    private function privateFunction() {
        return "Это приватная функция.";
    }

    // Статическая функция, которая создает экземпляр класса
    public static function callPrivateFunction() {
        // Создаем экземпляр класса
        $instance = new self(); // или new MyClass();
        // Вызываем приватную функцию через экземпляр
        return $instance->privateFunction();
    }
}

// Вызываем статическую функцию
echo MyClass::callPrivateFunction(); // Вывод: Это приватная функция.

В этом примере статическая функция callPrivateFunction() создает новый экземпляр класса MyClass и затем вызывает приватный метод privateFunction() через этот экземпляр. Таким образом, вы можете получить доступ к приватному методу из статического контекста.

Теги: PHP, вызов приватной функции, статические функции, методы класса, программирование на PHP, приватные методы, объектно-ориентированное программирование, OOP, работа с классами, доступ к функциям


Валерий Макеев
09.09.2025 16:33
Этот код определяет класс Calculator с приватным методом умножения и статическим методом, который возводит число в квадрат, создавая экземпляр класса для вызова приватного метода.
Код
<?php

class Calculator {
    private function multiply($a, $b) {
        return $a * $b;
    }

    public static function square($x) {
        $calc = new self();
        return $calc->multiply($x, $x);
    }
}

echo Calculator::square(5); // Вывод: 25

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.