library may need to control or free the memory, or when the memory in
question needs to survive between multiple requests.
-User Functions/Methods Naming Conventions
+Naming Conventions
------------------
1. Function names for user-level functions should be enclosed with in
'foobar'
'foo_bar'
-Internal Function Naming Convensions
-----------------------
-
-1. Exposed module API must be named 'php_modulename_function()' to avoid
- symbol collision. They should be in lowercase, with words underscore
- delimited. Exposed API must be defined in 'php_modulename.h'.
-
- PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS);
-
- Unexposed module function should be static and should not be defined in
- 'php_modulename.h'.
-
- static int php_session_destroy(TSRMLS_D)
-
-2. Main module source file must be named 'modulename.c'.
-
-3. Header file that are used by other sources must be named 'php_modulename.h'.
-
-
Syntax and indentation
----------------------
of PHP or one of its standard modules, please maintain the K&R
style. This applies to just about everything, starting with
indentation and comment styles and up to function declaration
- syntax. Also see Indentstyle.
+ syntax. Also see Indentstyle_.
- Indentstyle: http://www.catb.org/~esr/jargon/html/I/indent-style.html
+.. _Indentstyle: http://www.catb.org/~esr/jargon/html/I/indent-style.html
3. Be generous with whitespace and braces. Keep one empty line between the
variable declaration section and the statements in a block, as well as
-This file describes extension module API details. Refer to
-README.EXT_SKEL to create extension skeleton files. Refer to
-Hacker's Guide for PHP internals.
-
-http://www.php.net/manual/en/internals2.php
-
-
-
Between PHP 4.0.6 and 4.1.0, the Zend module struct changed in a way
that broke both source and binary compatibility. If you are
maintaining a third party extension, here's how to update it:
--proto=filename.
-SOURCE AND HEADER FILE NAME
-
- ./ext_skel generates 'module_name.c' and 'php_module_name.h' as main source
- and header files. Keep these names.
-
- Module functions (User functions) must be named
-
- module_name_function()
-
- When you need to expose module functions to other modules, expose functions
- strictly needed by others. Exposed internal function must be named
-
- php_module_name_function()
-
- See also CODING_STANDARDS.
-
-
FORMAT OF FUNCTION DEFINITIONS FILE
All the definitions must be on one line. In it's simplest form, it's just
the function name, e.g.
- module_name_function
+ my_function
but then you'll be left with an almost empty function body without any
argument handling.
An example:
- module_name_function(int arg1, int arg2 [, int arg3 [, int arg4]])
+ my_function(int arg1, int arg2 [, int arg3 [, int arg4]]) this is my 1st
- Arguments arg1 and arg2 is required.
Arguments arg3 and arg4 are optional.
If possible, the function definition should also contain it's return type
The following _one_ line
- bool module_name_drawtext(resource image, string text, resource font, int x, int y [, int color])
+ bool my_drawtext(resource image, string text, resource font, int x, int y [, int color])
will create this function definition for you (note that there are a few
question marks to be replaced by you, and you must of course add your own
value definitions too):
-/* {{{ proto bool module_name_drawtext(resource image, string text, resource font, int x, int y [, int color])
+/* {{{ proto bool my_drawtext(resource image, string text, resource font, int x, int y [, int color])
*/
-PHP_FUNCTION(module_name_drawtext)
+PHP_FUNCTION(my_drawtext)
{
char *text = NULL;
int argc = ZEND_NUM_ARGS();
ZEND_FETCH_RESOURCE(???, ???, font, font_id, "???", ???_rsrc_id);
}
- php_error(E_WARNING, "module_name_drawtext: not yet implemented");
+ php_error(E_WARNING, "my_drawtext: not yet implemented");
}
/* }}} */
ensure it has a file extension of ".txt". This is because only MIME
attachments of type 'text/*' are accepted.
-Preferred way to propose PHP patch is sending pull request from github.
-
-https://github.com/php/php-src
-
-Fork official PHP repository and send pull request. It will be notified
-to pull request mailing list. You can add pull requests to
-http://bugs.php.net/ reports also.
-
PHP Documentation Patches
-------------------------