Could someone clarify how to check for flags within a user defined function.
These constants are predefined glob flags.
- GLOB_BRACE
- GLOB_MARK
- GLOB_NOSORT
- GLOB_NOCHECK
- GLOB_NOESCAPE
- GLOB_ERR
- GLOB_ONLYDIR
and I have created a new one just to test.
define('GLOB_CUSTOM', 123);
I have also tried
define('GLOB_CUSTOM',0b1111011);
The results are the same.
This function does a var_dump of the flags passed.
function flags_test($flags = NULL) {
echo '$flags argument<br>';
var_dump($flags); // int 1073746108
echo '<br>';
if($flags & GLOB_BRACE){
echo 'FLAG : "GLOB_BRACE" is set';
var_dump(GLOB_BRACE);
echo '<br>';
}
if($flags & GLOB_MARK){
echo 'FLAG : "GLOB_MARK" is set';
var_dump(GLOB_MARK);
echo '<br>';
}
if($flags & GLOB_NOSORT){
echo 'FLAG : "GLOB_NOSORT" is set';
var_dump(GLOB_NOSORT);
echo '<br>';
}
if($flags & GLOB_NOCHECK){
echo 'FLAG : "GLOB_NOCHECK" is set';
var_dump(GLOB_NOCHECK);
echo '<br>';
}
if($flags & GLOB_NOESCAPE){
echo 'FLAG : "GLOB_NOESCAPE" is set';
var_dump(GLOB_NOESCAPE);
echo '<br>';
}
if($flags & GLOB_ERR){
echo 'FLAG : "GLOB_ERR" is set';
var_dump(GLOB_ERR);
echo '<br>';
}
if($flags & GLOB_ONLYDIR){
echo 'FLAG : "GLOB_ONLYDIR" is set';
var_dump(GLOB_ONLYDIR);
echo '<br>';
}
if($flags & GLOB_CUSTOM){
echo 'FLAG : "GLOB_CUSTOM" is set';
var_dump(GLOB_CUSTOM);
echo '<br>';
}
}
Test one.
flags_test(GLOB_ONLYDIR); // test one
Results
$flags argument
int 168
FLAG : "GLOB_BRACE" is set
int 128
FLAG : "GLOB_MARK" is set
int 8
FLAG : "GLOB_NOSORT" is set
int 32
FLAG : "GLOB_CUSTOM" is set
int 123
Test two.
flags_test(GLOB_CUSTOM);
Results
$flags argument
int 251
FLAG : "GLOB_BRACE" is set
int 128
FLAG : "GLOB_MARK" is set
int 8
FLAG : "GLOB_NOSORT" is set
int 32
FLAG : "GLOB_NOCHECK" is set
int 16
FLAG : "GLOB_CUSTOM" is set
int 123
I have a few questions.
- In test one why is
GLOB_CUSTOM
showing as set ? - In test two why is
GLOB_BRACE
,GLOB_MARK
,GLOB_NOSORT
andGLOB_NOCHECK
showing as set ? - What does the value of the
var_dump($flags)
represent(where did that number come from)?
How to implement a bitmask in php? is where i started, i build my example from the accepted answer. Unfortunately it doesn't explain any of the points above.
Edit :
Flags must be powers of 2 in order to bitwise-or together properly.PHP function flags, how?
This should solve the problem
define('GLOB_CUSTOM', 64);