Как переопределить встроенные функции (ы) PHP?

Я хотел бы переопределить, скажем, mysql_num_rows , скажем, следующее:

 $dataset = array(array('id' => 1, 'name' => 'Zlatan', 'onSOF' => 1), array('id' => 1, 'name' => 'Guest', 'onSOF' => 0)); function mysql_num_rows($dataset) { return sizeof($dataset); } 

Поддерживает ли PHP встроенную функцию переопределения?


РАСШИРЕНИЕ

Я хочу создать решение OpenSource, которое переопределит все существующие функции mysql_* , и это их тело функции. Я буду использовать экземпляры и методы PDO и свойства.

Это означает, что пользователи, которые уже используют mysql_* и не могут полностью переместиться в PDO, должны просто включить это переопределение функции, и все свойства, вызовы функций, возвращаемые значения функций, значения аргументов и т. Д. Должны быть оставлены одинаковыми.

Solutions Collecting From Web of "Как переопределить встроенные функции (ы) PHP?"

Я думаю, это можно сделать так:

 //First rename existing function rename_function('strlen', 'new_strlen'); //Override function with another override_function('strlen', '$string', 'return override_strlen($string);'); //Create the other function function override_strlen($string){ return new_strlen($string); } 

нашел его здесь

Обратите внимание, что на каждом хосте должен быть установлен http://php.net/manual/en/book.apd.php на сервере.

редактировать

Другой способ – использовать пространства имен

 <?php namespace mysql2pdo; use PDO; function mysql_connect() { return new PDO(); } echo mysql_connect(); // Causes error because we don't have the parameters ?> 

Проверьте его здесь

Установите runkit и используйте runkit_function_redefine . Только делайте это только при разработке / тестировании серверов, никогда в производстве.