summaryrefslogtreecommitdiff
path: root/CODING_STANDARDS
diff options
context:
space:
mode:
authorSterling Hughes <sterling@php.net>2003-04-04 17:01:09 +0000
committerSterling Hughes <sterling@php.net>2003-04-04 17:01:09 +0000
commita0729141e01c0dce6437c897c903f6422d0c1814 (patch)
tree54caed756e64f3e71dd201493c72355aa2bf9acb /CODING_STANDARDS
parent335a1c1a6d857696fca98370cef2270327fda6d2 (diff)
downloadphp-git-a0729141e01c0dce6437c897c903f6422d0c1814.tar.gz
both these entries are bad, and were never agreed upon.
assert() usage is a controversial concept at best. docref() is something quite a few of us strong disagree with. suspending this until further discussion.
Diffstat (limited to 'CODING_STANDARDS')
-rw-r--r--CODING_STANDARDS64
1 files changed, 5 insertions, 59 deletions
diff --git a/CODING_STANDARDS b/CODING_STANDARDS
index 42ac2f5aa7..12fbd3a0f1 100644
--- a/CODING_STANDARDS
+++ b/CODING_STANDARDS
@@ -48,81 +48,27 @@ Exceptions:
doing so, should return that new length, so it doesn't have to be
recalculated with strlen() (e.g. php_addslashes())
-[5] Use php_error_docref() group of functions to report any errors/warnings
- during code execution. Use descriptive error messages, and try to avoid
- using identical error strings for different stages of an error. For
- example, if in order to obtain a URL you have to parse the URL, connect,
- and retreive the text, assuming something can go wrong at each of these
- stages, don't report an error "Unable to get URL" on all of them, but
- instead, write something like "Unable to parse URL", "Unable to connect
- to URL server" and "Unable to fetch URL text", respectively.
-
- It has been silently agreed to prefix every php_error() message with the
- name of the current function if applicable:
-
- php_error(E_WHATEVER, "%s(): Desc.", get_active_function_name(TSRMLS_C));
-
- This can be done automatically using php_error_docref(). The first
- parameter, docref, is either NULL or the URL of a page describing the
- error in detail. In most cases you will pass NULL, to generate the URL
- from the name of the function being executed:
-
- php_error_docref(NULL TSRMLS_CC, E_WHATEVER, "Desc.");
-
- If you pass a URL, it can either be a full URL beginning with "http://":
-
- php_error_docref("http://externalsite.tld/page.ext#error"
- TSRMLS_CC, E_WHATEVER, "Desc.");
-
- Or the name of a manual page without file extension, but with an optional
- target anchor. Or simply the anchor within the manual page of the current
- function. When using function names you must replace '_' by '-':
-
- php_error_docref("function.ext-func#error" TSRMLS_CC, E_WHATEVER, "Desc.");
-
- To display one or two important parameters after the function name, use
- php_error_docref1() or php_error_docref2(). For example, file functions
- should display the name of the file opened:
-
- php_error_docref1("function.fopen" TSRMLS_CC, filename,
- E_WHATEVER, "Desc.");
-
- php_error_docref2("function.fopen" TSRMLS_CC, filename, openmode,
- E_WHATEVER, "Desc.");
-
- Fixing ("unifying") existing php_error() message is a good thing [tm].
-
-[6] NEVER USE strncat(). If you're absolutely sure you know what you're doing,
+[5] NEVER USE strncat(). If you're absolutely sure you know what you're doing,
check its man page again, and only then, consider using it, and even then,
try avoiding it.
-[7] Use PHP_* macros in the PHP source, and ZEND_* macros in the Zend
+[6] Use PHP_* macros in the PHP source, and ZEND_* macros in the Zend
part of the source. Although the PHP_* macro's are mostly aliased to the
ZEND_* macros it gives a better understanding on what kind of macro you're
calling.
-[8] Use assert(). assert.h is included in php.h if it is available. Not only
- does good assertion catch bugs, but it also helps with code readability.
- - Do not use assert for error handling. Use assert only for the
- condition that must be always true.
- - Do not use assignments in assert conditions. If you assign inside an
- assert condition, you risk an elusive bug that would be very difficult
- to spot in a debug build, due to the side effect of the assignment.
- Function calls in assert conditions may also cause this problem, if
- they modify one of their arguments or global variables.
-
-[9] When commenting out code using a #if statement, do NOT use 0 only. Instead
+[7] When commenting out code using a #if statement, do NOT use 0 only. Instead
use "<cvs username here>_0". For example, #if FOO_0, where FOO is your
cvs user foo. This allows easier tracking of why code was commented out,
especially in bundled libraries.
-[10] Do not define functions that are not available. For instance, if a
+[8] Do not define functions that are not available. For instance, if a
library is missing a function, do not define the PHP version of the
function, and do not raise a run-time error about the function not
existing. End users should use function_exists() to test for the
existence of a function
-[11] Prefer emalloc(), efree(), estrdup(), etc. to their standard C library
+[9] Prefer emalloc(), efree(), estrdup(), etc. to their standard C library
counterparts. These functions implement an internal "safety-net"
mechanism that ensures the deallocation of any unfreed memory at the
end of a request. They also provide useful allocation and overflow