[prev in list] [next in list] [prev in thread] [next in thread]
List: php-doc-bugs
Subject: [DOC-BUGS] Bug->Doc #74399 [Nab->Ver]: ob_*clean* methods do not respect missing cleanable flag; sam
From: requinix () php ! net
Date: 2017-04-28 7:50:50
Message-ID: 201704280750.v3S7oovx021327 () sgrv20 ! php ! net
[Download RAW message or body]
Edit report at https://bugs.php.net/bug.php?id=74399&edit=1
ID: 74399
Updated by: requinix@php.net
Reported by: krody dot robi at gmail dot com
Summary: ob_*clean* methods do not respect missing cleanable
flag; same for flushing
-Status: Not a bug
+Status: Verified
-Type: Bug
+Type: Documentation Problem
Package: Output Control
Operating System: Irrelevant
PHP Version: 7.1.3
Block user comment: N
Private report: N
New Comment:
Then this is a doc bug because all four functions claim they need the respective \
CLEANABLE/FLUSHABLE flag to work.
Previous Comments:
------------------------------------------------------------------------
[2017-04-28 07:48:47] mike@php.net
See also bug #69404
------------------------------------------------------------------------
[2017-04-28 07:43:24] mike@php.net
Unfortunately there's no one-to-one correlation between the legacy userland function \
names and the flags of the new output API.
- ob_end_flush() is actually a finalize & send and not a "flush" in a strict sense
- ob_get_flush() is a finalize & send action, too
- ob_end_clean() is actually a discard & remove and not a "clean" in a strict sense
- ob_get_clean() is a finalize & remove action
I know, the legacy function names are bad and confusing, but were kept for BC, as was \
their functionality.
------------------------------------------------------------------------
[2017-04-10 08:05:57] requinix@php.net
Goes back to when the flags were introduced in 5.4: https://3v4l.org/G1Eqn
Indeed, CLEANABLE only affects ob_clean() and FLUSHABLE only affects ob_flush(). \
Looks like it would be fairly straightforward to add in.
The alternative would be adjusting the docs, but having those functions respect the \
flags makes sense to me. And in the case of ob_end_clean and ob_end_flush I would \
expect both the cleanable/flushable and the removable flags to be required.
------------------------------------------------------------------------
[2017-04-10 06:02:10] krody dot robi at gmail dot com
Description:
------------
This is happening in both php 5.6.29 and php 7.1.0 haven't checked any other versions \
-> that is why I marked it as version irrelevant as it seems to be version \
independent
Test script:
---------------
function callback($buffer, $status) {
return "callback $buffer";
}
ob_start( 'callback', 0, PHP_OUTPUT_HANDLER_FLUSHABLE | \
PHP_OUTPUT_HANDLER_REMOVABLE);
echo 'test';
echo ob_get_clean(); //this should not work as no CLEANABLE flag was set on \
ob_start //ob_end_clean is ran as well
//ob_clean -> failed to delete buffer notice
echo "\n".ob_get_level();
Expected result:
----------------
PHP Notice on ob_start not having the correct flags set for action for the following \
methods
ob_clean()
ob_get_clean()
ob_end_clean()
Actual result:
--------------
ob_get_clean() - retrieves buffer content, destroys the buffer
ob_end_clean() - buffer destroyed
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74399&edit=1
--
PHP Documentation Bugs Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic