function class_virtual_declarations($class_name, $class_methods)
{
    $virtual_methods = "";
    foreach ($class_methods as $method_name => $method_definitions) {
        foreach ($method_definitions as $method_definition) {
            //Skip constructors, static functions, and non protected virtual functions or pure virtual
            if ($method_definition["virtual"] && $method_definition["protected"] || $method_definition["pure_virtual"] || "" . strpos($method_name, "On") . "" == "0") {
                if ($method_name[0] != "_") {
                    $virtual_methods .= $method_definition["return_type"] . " {$method_name}(";
                    $virtual_methods .= function_arguments_string($method_definition);
                    $virtual_methods .= ")";
                    if ($method_definition["constant"]) {
                        $virtual_methods .= " const";
                    }
                    $virtual_methods .= ";\n\t";
                }
            }
        }
    }
    return $virtual_methods;
}
<?php

echo proto_begin($method_name, $class_name);
echo $method_definition["return_type"];
?>
 <?php 
echo $class_name;
?>
_php::<?php 
echo $method_name;
?>
(<?php 
echo function_arguments_string($method_definition, false);
?>
)<?php 
echo $method_definition["constant"] ? "const\n" : "\n";
?>
{
	static zend_function* cached_function = NULL;
	static bool is_php_user_space_implemented = true;
	
	#ifdef USE_WXPHP_DEBUG
	php_printf("Invoking virtual <?php 
echo $class_name;
?>
::<?php 
echo $method_name;
?>
\n");
	php_printf("===========================================\n");
	#endif
Example #3
0
/**
 * For removing global functions marked as deprecated.
 * 
 * @param array $functions Reference to variable that holds list of functions
 */
function remove_deprecated_functions(&$functions)
{
    file_put_contents("discarded.log", "Deprecated Functions\n\n", FILE_APPEND);
    foreach ($functions as $function_name => $function_definitions) {
        $removed_definitions = 0;
        foreach ($function_definitions as $function_index => $function_definition) {
            $index_to_remove = $function_index - $removed_definitions;
            $removed = false;
            //Check return type
            if ($function_definition["deprecated"]) {
                file_put_contents("discarded.log", $function_definition["return_type"] . " {$function_name}(" . function_arguments_string($function_definition) . ")\n", FILE_APPEND);
                unset($functions[$function_name][$index_to_remove]);
                $removed = true;
            }
            if ($removed) {
                $removed_definitions++;
                //Remove functions with no definitions
                if (count($functions[$function_name]) <= 0) {
                    unset($functions[$function_name]);
                } else {
                    $temp_definitions = $functions[$function_name];
                    $functions[$function_name] = array();
                    foreach ($temp_definitions as $temp_definition) {
                        $functions[$function_name][] = $temp_definition;
                    }
                }
            }
        }
    }
    file_put_contents("discarded.log", "\n\n\n", FILE_APPEND);
}