| Server IP : 188.114.96.2 / Your IP : 104.23.197.231 Web Server : Apache/2.4.59 (Debian) System : Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : edlftp ( 1002) PHP Version : 7.4.33 Disable Function : 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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/nicolasj/www/ecoledelangues.be/wp-content/plugins/wp-google-maps/includes/ |
Upload File : |
<?php
namespace WPGMZA;
if(!defined('ABSPATH'))
return;
/**
* The Factory class is a base class which can be used to make any classes
* externally extensible. A filter is added for wpgmza_create_{class} which
* is called by createInstance. If this filter returns a subclass of Factory,
* that filter will override the default class and will be used.
*
* IMPORTANT: Any objects which subclass Factory MUST be created by calling
* createInstance on the subclass. Calling new on the constructor directly will
* not cause this filter to fire, and the extended class will not be used.
*/
#[\AllowDynamicProperties]
class Factory
{
/**
* Creates an instance of the desired subclass, this will return the default instance if no filter is used to override the process, or will return the extended class if a filter has been bound
* @throws \Exception
*/
public static function createInstance()
{
$class = get_called_class();
$args = func_get_args();
$count = count($args);
$filter = "wpgmza_create_$class";
if($class == 'WPGMZA\\Factory')
throw new \Exception('Factory createInstance would return abstract Factory');
// TODO: If the created object is a descendant of CRUD
if(empty($args)){
if(is_subclass_of($class, '\\WPGMZA\\Crud'))
$filter_args = array($filter, -1);
else
$filter_args = array($filter, null);
}
else
$filter_args = array_merge(array($filter), $args);
/* Developer Hook (Filter) - Apply CRUD class filters */
$override = call_user_func_array('apply_filters', $filter_args);
// NB: This stops override being the same as the first argument, which is needed for example when passing a Map as the first argument of StoreLocator
if(count($args) && $args[0] === $override)
$override = null;
if($override instanceof \WPGMZA\Factory)
return $override;
$reflect = new \ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);
return $instance;
}
}