Override internal PHP functions

July 28, 2021

Переписать функцию PHP без специальных расширений и отладочных инструментов. Возможно ли? Спйолер: Да.

Но есть нюанс. Сначала нужно функцию, которую хочется переопределить стереть. А сделать это можно через php.ini файл, вписав функцию в директиву:

disable_functions =

Для примера возьмем функцию date и сделаем следующее:

php.ini

disable_functions = date

auto_prepend_file = path/to/my_defined_functions.php

Пишем что нить типа:

<?php declare(strict_types=1);

/**

  • @param string $s
  • @return string

*/ function date(string $s): string { return ‘А не все ли равно какая дата?’; }

echo date(‘d.m.Y’);

Ну вот и все. Более не существует встроенной функции date. Так можно поступить со множеством функций.

Для чего? Подхачить что-то на глобальном уровне, нахуевертить свою обертку над чем-либо… В общем инструмент есть, а применение всегда найдется.



Profile picture

Written by Alexander Mayorov
Full Stack CTO