| Server IP : 38.190.208.107 / Your IP : 216.73.217.46 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.8/wp-content/plugins/woocommerce/src/Internal/Utilities/ |
Upload File : |
<?php
declare( strict_types = 1 );
namespace Automattic\WooCommerce\Internal\Utilities;
use InvalidArgumentException;
/**
* Utilities to help ensure type safety.
*/
class Types {
/**
* Checks if $thing is an instance of $desired_type.
*
* If the check succeeds, $thing will be returned without further modification. If the check fails, then either
* an exception will be thrown or, if an $on_failure callback was supplied, it will be invoked to either generate
* an appropriate return value or to throw a more specific exception.
*
* Please note that the failure handler will be passed two arguments:
*
* $on_failure( $object, $desired_type )
*
* @since 9.1.0
* @throws InvalidArgumentException If $object does not match $desired_type, and an $on_failure callback was not supplied.
*
* @param mixed $thing The value or reference to be assessed.
* @param string $desired_type What we expect the return type to be, if it is not a WP_Error.
* @param ?callable $on_failure If provided, and if evaluation fails, this will be invoked to generate a return value.
*
* @return mixed
*/
public static function ensure_instance_of( $thing, string $desired_type, ?callable $on_failure = null ) {
// If everything looks good, return early.
if ( $thing instanceof $desired_type ) {
return $thing;
}
// Summarize the error for use in logging and in case we have to throw an exception.
$summary = sprintf(
'Object was not of expected type %1$s.',
$desired_type
);
// Otherwise, let's log the problem so the site operator has a record of where things went wrong.
$logger = wc_get_logger();
if ( $logger ) {
$logger->error(
$summary,
array(
'source' => 'wc-type-check-utility',
'backtrace' => true,
)
);
}
// Invoke the $on_failure handler, if specified.
if ( null !== $on_failure ) {
return $on_failure( $thing, $desired_type );
}
throw new InvalidArgumentException( esc_html( $summary ) );
}
}