summaryrefslogtreecommitdiff
path: root/vendor/symfony/debug/Resources/ext/README.md
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2017-12-15 11:24:35 -0800
committerFrédéric Guillot <fred@kanboard.net>2017-12-15 11:55:42 -0800
commita93b8e10f5954be0853eec693c13e84c4bd9e6f2 (patch)
treeeda5de9494b819235616e8623bb3393e9cc373af /vendor/symfony/debug/Resources/ext/README.md
parent2c72a283f2d51034f85f4e2ca8b194d304a3c433 (diff)
Kanboard requires at least PHP 5.6 now
Diffstat (limited to 'vendor/symfony/debug/Resources/ext/README.md')
-rw-r--r--vendor/symfony/debug/Resources/ext/README.md134
1 files changed, 134 insertions, 0 deletions
diff --git a/vendor/symfony/debug/Resources/ext/README.md b/vendor/symfony/debug/Resources/ext/README.md
new file mode 100644
index 00000000..25dccf07
--- /dev/null
+++ b/vendor/symfony/debug/Resources/ext/README.md
@@ -0,0 +1,134 @@
+Symfony Debug Extension for PHP 5
+=================================
+
+This extension publishes several functions to help building powerful debugging tools.
+It is compatible with PHP 5.3, 5.4, 5.5 and 5.6; with ZTS and non-ZTS modes.
+It is not required thus not provided for PHP 7.
+
+symfony_zval_info()
+-------------------
+
+- exposes zval_hash/refcounts, allowing e.g. efficient exploration of arbitrary structures in PHP,
+- does work with references, preventing memory copying.
+
+Its behavior is about the same as:
+
+```php
+<?php
+
+function symfony_zval_info($key, $array, $options = 0)
+{
+
+ // $options is currently not used, but could be in future version.
+
+ if (!array_key_exists($key, $array)) {
+ return null;
+ }
+
+ $info = array(
+ 'type' => gettype($array[$key]),
+ 'zval_hash' => /* hashed memory address of $array[$key] */,
+ 'zval_refcount' => /* internal zval refcount of $array[$key] */,
+ 'zval_isref' => /* is_ref status of $array[$key] */,
+ );
+
+ switch ($info['type']) {
+ case 'object':
+ $info += array(
+ 'object_class' => get_class($array[$key]),
+ 'object_refcount' => /* internal object refcount of $array[$key] */,
+ 'object_hash' => spl_object_hash($array[$key]),
+ 'object_handle' => /* internal object handle $array[$key] */,
+ );
+ break;
+
+ case 'resource':
+ $info += array(
+ 'resource_handle' => (int) $array[$key],
+ 'resource_type' => get_resource_type($array[$key]),
+ 'resource_refcount' => /* internal resource refcount of $array[$key] */,
+ );
+ break;
+
+ case 'array':
+ $info += array(
+ 'array_count' => count($array[$key]),
+ );
+ break;
+
+ case 'string':
+ $info += array(
+ 'strlen' => strlen($array[$key]),
+ );
+ break;
+ }
+
+ return $info;
+}
+```
+
+symfony_debug_backtrace()
+-------------------------
+
+This function works like debug_backtrace(), except that it can fetch the full backtrace in case of fatal errors:
+
+```php
+function foo() { fatal(); }
+function bar() { foo(); }
+
+function sd() { var_dump(symfony_debug_backtrace()); }
+
+register_shutdown_function('sd');
+
+bar();
+
+/* Will output
+Fatal error: Call to undefined function fatal() in foo.php on line 42
+array(3) {
+ [0]=>
+ array(2) {
+ ["function"]=>
+ string(2) "sd"
+ ["args"]=>
+ array(0) {
+ }
+ }
+ [1]=>
+ array(4) {
+ ["file"]=>
+ string(7) "foo.php"
+ ["line"]=>
+ int(1)
+ ["function"]=>
+ string(3) "foo"
+ ["args"]=>
+ array(0) {
+ }
+ }
+ [2]=>
+ array(4) {
+ ["file"]=>
+ string(102) "foo.php"
+ ["line"]=>
+ int(2)
+ ["function"]=>
+ string(3) "bar"
+ ["args"]=>
+ array(0) {
+ }
+ }
+}
+*/
+```
+
+Usage
+-----
+
+To enable the extension from source, run:
+
+```
+ phpize
+ ./configure
+ make
+ sudo make install
+```