<?php
function force_ssl_admin( $force = null ) {
static $forced = false;
if ( ! is_null( $force ) ) {
$old_forced = $forced;
$forced = $force;
return $old_forced;
}
return $forced;
}
function new_force_ssl_admin( $force = null ) {
static $forced = false;
if ( ! is_null( $force ) ) {
$old_forced = $forced;
$forced = (bool) $force;
return $old_forced;
}
return $forced;
}
$datasets = array(
'null' => array(
'force' => null,
'expected' => false,
),
'(bool) true' => array(
'force' => true,
'expected' => true,
),
'(bool) false' => array(
'force' => false,
'expected' => false,
),
'(int) 1' => array(
'force' => 1,
'expected' => true,
),
'(int) 0' => array(
'force' => 0,
'expected' => false,
),
'(string) "1"' => array(
'force' => '1',
'expected' => true,
),
'(string) "0"' => array(
'force' => '0',
'expected' => false,
),
'(float) 1.0' => array(
'force' => 1.0,
'expected' => true,
),
'(float) 0.0' => array(
'force' => 0.0,
'expected' => false,
),
'(string) "true"' => array(
'force' => 'true',
'expected' => true,
),
'(string) "false"' => array(
'force' => 'false',
'expected' => true, // (bool) "false" === true
),
'empty string' => array(
'force' => '',
'expected' => false,
),
'string with only spaces' => array(
'force' => ' ',
'expected' => true,
),
'non-empty array' => array(
'force' => array( 'item' ),
'expected' => true,
),
'empty array' => array(
'force' => array(),
'expected' => false,
),
'non-empty object' => array(
'force' => (object) array( 'item' ),
'expected' => true,
),
'empty object' => array(
'force' => (object) array(),
'expected' => true,
),
);
foreach( $datasets as $test => $data ) {
list( $force, $expected ) = array_values( $data );
force_ssl_admin( $force );
new_force_ssl_admin( $force );
$old = (bool) force_ssl_admin();
$new = new_force_ssl_admin();
echo str_pad( $test . ': ', max( array_map( 'strlen', array_keys( $datasets ) ) ) + 2 );
$bc = $new === $old;
$assert = $new === $expected;
if ( $bc && $assert ) {
echo 'Matches expected value and old value casted to bool.';
}
if ( ! $bc ) {
echo 'BC break. ';
}
if ( ! $assert ) {
echo "Incorrect value. \n";
echo '-', var_export( $expected, true ), "\n";
echo '+', var_export( $new, true ), "\n";
}
echo "\n";
}
preferences:
57.31 ms | 409 KiB | 5 Q